From 127e61728bacf1fb90edd8be1b0c406619e78bc8 Mon Sep 17 00:00:00 2001 From: ru Date: Fri, 11 Oct 2002 08:52:17 +0000 Subject: Virgin import of FSF groff v1.18.1 --- contrib/groff/doc/groff-1 | 1386 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1386 insertions(+) create mode 100644 contrib/groff/doc/groff-1 (limited to 'contrib/groff/doc/groff-1') diff --git a/contrib/groff/doc/groff-1 b/contrib/groff/doc/groff-1 new file mode 100644 index 0000000..0f13ab3 --- /dev/null +++ b/contrib/groff/doc/groff-1 @@ -0,0 +1,1386 @@ +This is groff, produced by makeinfo version 4.2 from ./groff.texinfo. + +This manual documents GNU `troff' version 1.18. + + Copyright (C) 1994-2000, 2001, 2002 Free Software Foundation, Inc. + + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation License, + Version 1.1 or any later version published by the Free Software + Foundation; with no Invariant Sections, with the Front-Cover texts + being `A GNU Manual," and with the Back-Cover Texts as in (a) + below. A copy of the license is included in the section entitled + `GNU Free Documentation License." + + (a) The FSF's Back-Cover Text is: `You have freedom to copy and + modify this GNU Manual, like GNU software. Copies published by + the Free Software Foundation raise funds for GNU development." + +INFO-DIR-SECTION Miscellaneous +START-INFO-DIR-ENTRY +* Groff: (groff). The GNU troff document formatting system. +END-INFO-DIR-ENTRY + + +File: groff, Node: Top, Next: Introduction, Prev: (dir), Up: (dir) + +GNU troff +********* + +This manual documents GNU `troff' version 1.18. + + Copyright (C) 1994-2000, 2001, 2002 Free Software Foundation, Inc. + + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation License, + Version 1.1 or any later version published by the Free Software + Foundation; with no Invariant Sections, with the Front-Cover texts + being `A GNU Manual," and with the Back-Cover Texts as in (a) + below. A copy of the license is included in the section entitled + `GNU Free Documentation License." + + (a) The FSF's Back-Cover Text is: `You have freedom to copy and + modify this GNU Manual, like GNU software. Copies published by + the Free Software Foundation raise funds for GNU development." + +* Menu: + +* Introduction:: +* Invoking groff:: +* Tutorial for Macro Users:: +* Macro Packages:: +* gtroff Reference:: +* Preprocessors:: +* Output Devices:: +* File formats:: +* Installation:: +* Copying This Manual:: +* Request Index:: +* Escape Index:: +* Operator Index:: +* Register Index:: +* Macro Index:: +* String Index:: +* Glyph Name Index:: +* Font File Keyword Index:: +* Program and File Index:: +* Concept Index:: + + +File: groff, Node: Introduction, Next: Invoking groff, Prev: Top, Up: Top + +Introduction +************ + + GNU `troff' (or `groff') is a system for typesetting documents. +`troff' is very flexible and has been in existence (and use) for about +3 decades. It is quite widespread and firmly entrenched in the UNIX +community. + +* Menu: + +* What Is groff?:: +* History:: +* groff Capabilities:: +* Macro Package Intro:: +* Preprocessor Intro:: +* Output device intro:: +* Credits:: + + +File: groff, Node: What Is groff?, Next: History, Prev: Introduction, Up: Introduction + +What Is `groff'? +================ + + `groff' belongs to an older generation of document preparation +systems, which operate more like compilers than the more recent +interactive WYSIWYG(1) (*note What Is groff?-Footnote-1::) systems. +`groff' and its contemporary counterpart, TeX, both work using a +"batch" paradigm: The input (or "source") files are normal text files +with embedded formatting commands. These files can then be processed +by `groff' to produce a typeset document on a variety of devices. + + Likewise, `groff' should not be confused with a "word processor", +since that term connotes an integrated system that includes an editor +and a text formatter. Also, many word processors follow the WYSIWYG +paradigm discussed earlier. + + Although WYSIWYG systems may be easier to use, they have a number of +disadvantages compared to `troff': + + * They must be used on a graphics display to work on a document. + + * Most of the WYSIWYG systems are either non-free or are not very + portable. + + * `troff' is firmly entrenched in all UNIX systems. + + * It is difficult to have a wide range of capabilities available + within the confines of a GUI/window system. + + * It is more difficult to make global changes to a document. + + "GUIs normally make it simple to accomplish simple actions and + impossible to accomplish complex actions." -Doug Gwyn (22/Jun/91 + in `comp.unix.wizards') + + +File: groff, Node: What Is groff?-Footnotes, Up: What Is groff? + + (1) What You See Is What You Get + + +File: groff, Node: History, Next: groff Capabilities, Prev: What Is groff?, Up: Introduction + +History +======= + + `troff' can trace its origins back to a formatting program called +`runoff', written by J. E. Saltzer, which ran on MIT's CTSS operating +system in the mid-sixties. This name came from the common phrase of +the time "I'll run off a document." Bob Morris ported it to the 635 +architecture and called the program `roff' (an abbreviation of +`runoff'). It was rewritten as `rf' for the PDP-7 (before having +UNIX), and at the same time (1969), Doug McIllroy rewrote an extended +and simplified version of `roff' in the BCPL programming language. + + The first version of UNIX was developed on a PDP-7 which was sitting +around Bell Labs. In 1971 the developers wanted to get a PDP-11 for +further work on the operating system. In order to justify the cost for +this system, they proposed that they would implement a document +formatting system for the AT&T patents division. This first formatting +program was a reimplementation of McIllroy's `roff', written by +J. F. Ossanna. + + When they needed a more flexible language, a new version of `roff' +called `nroff' ("Newer `roff'") was written. It had a much more +complicated syntax, but provided the basis for all future versions. +When they got a Graphic Systems CAT Phototypesetter, Ossanna wrote a +version of `nroff' that would drive it. It was dubbed `troff', for +"typesetter `roff'", although many people have speculated that it +actually means "Times `roff'" because of the use of the Times font +family in `troff' by default. As such, the name `troff' is pronounced +`t-roff' rather than `trough'. + + With `troff' came `nroff' (they were actually the same program +except for some `#ifdef's), which was for producing output for line +printers and character terminals. It understood everything `troff' +did, and ignored the commands which were not applicable (e.g. font +changes). + + Since there are several things which cannot be done easily in +`troff', work on several preprocessors began. These programs would +transform certain parts of a document into `troff', which made a very +natural use of pipes in UNIX. + + The `eqn' preprocessor allowed mathematical formulae to be specified +in a much simpler and more intuitive manner. `tbl' is a preprocessor +for formatting tables. The `refer' preprocessor (and the similar +program, `bib') processes citations in a document according to a +bibliographic database. + + Unfortunately, Ossanna's `troff' was written in PDP-11 assembly +language and produced output specifically for the CAT phototypesetter. +He rewrote it in C, although it was now 7000 lines of uncommented code +and still dependent on the CAT. As the CAT became less common, and was +no longer supported by the manufacturer, the need to make it support +other devices became a priority. However, before this could be done, +Ossanna was killed in a car accident. + + So, Brian Kernighan took on the task of rewriting `troff'. The +newly rewritten version produced device independent code which was very +easy for postprocessors to read and translate to the appropriate +printer codes. Also, this new version of `troff' (called `ditroff' for +"device independent `troff'") had several extensions, which included +drawing functions. + + Due to the additional abilities of the new version of `troff', +several new preprocessors appeared. The `pic' preprocessor provides a +wide range of drawing functions. Likewise the `ideal' preprocessor did +the same, although via a much different paradigm. The `grap' +preprocessor took specifications for graphs, but, unlike other +preprocessors, produced `pic' code. + + James Clark began work on a GNU implementation of `ditroff' in +early 1989. The first version, `groff' 0.3.1, was released June 1990. +`groff' included: + + * A replacement for `ditroff' with many extensions. + + * The `soelim', `pic', `tbl', and `eqn' preprocessors. + + * Postprocessors for character devices, POSTSCRIPT, TeX DVI, and + X Windows. GNU `troff' also eliminated the need for a separate + `nroff' program with a postprocessor which would produce ASCII + output. + + * A version of the `me' macros and an implementation of the `man' + macros. + + Also, a front-end was included which could construct the, sometimes +painfully long, pipelines required for all the post- and preprocessors. + + Development of GNU `troff' progressed rapidly, and saw the additions +of a replacement for `refer', an implementation of the `ms' and `mm' +macros, and a program to deduce how to format a document (`grog'). + + It was declared a stable (i.e. non-beta) package with the release of +version 1.04 around November 1991. + + Beginning in 1999, `groff' has new maintainers (the package was an +orphan for a few years). As a result, new features and programs like +`grn', a preprocessor for gremlin images, and an output device to +produce HTML output have been added. + + +File: groff, Node: groff Capabilities, Next: Macro Package Intro, Prev: History, Up: Introduction + +`groff' Capabilities +==================== + + So what exactly is `groff' capable of doing? `groff' provides a +wide range of low-level text formatting operations. Using these, it is +possible to perform a wide range of formatting tasks, such as +footnotes, table of contents, multiple columns, etc. Here's a list of +the most important operations supported by `groff': + + * text filling, adjusting, and centering + + * hyphenation + + * page control + + * font and glyph size control + + * vertical spacing (e.g. double-spacing) + + * line length and indenting + + * macros, strings, diversions, and traps + + * number registers + + * tabs, leaders, and fields + + * input and output conventions and character translation + + * overstrike, bracket, line drawing, and zero-width functions + + * local horizontal and vertical motions and the width function + + * three-part titles + + * output line numbering + + * conditional acceptance of input + + * environment switching + + * insertions from the standard input + + * input/output file switching + + * output and error messages + + +File: groff, Node: Macro Package Intro, Next: Preprocessor Intro, Prev: groff Capabilities, Up: Introduction + +Macro Packages +============== + + Since `groff' provides such low-level facilities, it can be quite +difficult to use by itself. However, `groff' provides a "macro" +facility to specify how certain routine operations (e.g. starting +paragraphs, printing headers and footers, etc.) should be done. These +macros can be collected together into a "macro package". There are a +number of macro packages available; the most common (and the ones +described in this manual) are `man', `mdoc', `me', `ms', and `mm'. + + +File: groff, Node: Preprocessor Intro, Next: Output device intro, Prev: Macro Package Intro, Up: Introduction + +Preprocessors +============= + + Although `groff' provides most functions needed to format a +document, some operations would be unwieldy (e.g. to draw pictures). +Therefore, programs called "preprocessors" were written which +understand their own language and produce the necessary `groff' +operations. These preprocessors are able to differentiate their own +input from the rest of the document via markers. + + To use a preprocessor, UNIX pipes are used to feed the output from +the preprocessor into `groff'. Any number of preprocessors may be used +on a given document; in this case, the preprocessors are linked +together into one pipeline. However, with `groff', the user does not +need to construct the pipe, but only tell `groff' what preprocessors to +use. + + `groff' currently has preprocessors for producing tables (`tbl'), +typesetting equations (`eqn'), drawing pictures (`pic' and `grn'), and +for processing bibliographies (`refer'). An associated program which +is useful when dealing with preprocessors is `soelim'. + + A free implementation of `grap', a preprocessor for drawing graphs, +can be obtained as an extra package; `groff' can use `grap' also. + + There are other preprocessors in existence, but, unfortunately, no +free implementations are available. Among them are preprocessors for +drawing mathematical pictures (`ideal') and chemical structures +(`chem'). + + +File: groff, Node: Output device intro, Next: Credits, Prev: Preprocessor Intro, Up: Introduction + +Output Devices +============== + + `groff' actually produces device independent code which may be fed +into a postprocessor to produce output for a particular device. +Currently, `groff' has postprocessors for POSTSCRIPT devices, character +terminals, X Windows (for previewing), TeX DVI format, HP LaserJet 4 +and Canon LBP printers (which use CAPSL), and HTML. + + +File: groff, Node: Credits, Prev: Output device intro, Up: Introduction + +Credits +======= + + Large portions of this manual were taken from existing documents, +most notably, the manual pages for the `groff' package by James Clark, +and Eric Allman's papers on the `me' macro package. + + The section on the `man' macro package is partly based on Susan G. +Kleinmann's `groff_man' manual page written for the Debian GNU/Linux +system. + + Larry Kollar contributed the section in the `ms' macro package. + + +File: groff, Node: Invoking groff, Next: Tutorial for Macro Users, Prev: Introduction, Up: Top + +Invoking `groff' +**************** + + This section focuses on how to invoke the `groff' front end. This +front end takes care of the details of constructing the pipeline among +the preprocessors, `gtroff' and the postprocessor. + + It has become a tradition that GNU programs get the prefix `g' to +distinguish it from its original counterparts provided by the host (see +*Note Environment::, for more details). Thus, for example, `geqn' is +GNU `eqn'. On operating systems like GNU/Linux or the Hurd, which +don't contain proprietary versions of `troff', and on +MS-DOS/MS-Windows, where `troff' and associated programs are not +available at all, this prefix is omitted since GNU `troff' is the only +used incarnation of `troff'. Exception: `groff' is never replaced by +`roff'. + + In this document, we consequently say `gtroff' when talking about +the GNU `troff' program. All other implementations of `troff' are +called AT&T `troff' which is the common origin of all `troff' derivates +(with more or less compatible changes). Similarly, we say `gpic', +`geqn', etc. + +* Menu: + +* Groff Options:: +* Environment:: +* Macro Directories:: +* Font Directories:: +* Invocation Examples:: + + +File: groff, Node: Groff Options, Next: Environment, Prev: Invoking groff, Up: Invoking groff + +Options +======= + + `groff' normally runs the `gtroff' program and a postprocessor +appropriate for the selected device. The default device is `ps' (but +it can be changed when `groff' is configured and built). It can +optionally preprocess with any of `gpic', `geqn', `gtbl', `ggrn', +`grap', `grefer', or `gsoelim'. + + This section only documents options to the `groff' front end. Many +of the arguments to `groff' are passed on to `gtroff', therefore those +are also included. Arguments to pre- or postprocessors can be found in +*Note Invoking gpic::, *Note Invoking geqn::, *Note Invoking gtbl::, +*Note Invoking ggrn::, *Note Invoking grefer::, *Note Invoking +gsoelim::, *Note Invoking grotty::, *Note Invoking grops::, *Note +Invoking grohtml::, *Note Invoking grodvi::, *Note Invoking grolj4::, +*Note Invoking grolbp::, and *Note Invoking gxditview::. + + The command line format for `groff' is: + + + groff [ -abceghilpstvzCEGNRSUVXZ ] [ -FDIR ] [ -mNAME ] + [ -TDEF ] [ -fFAM ] [ -wNAME ] [ -WNAME ] + [ -MDIR ] [ -dCS ] [ -rCN ] [ -nNUM ] + [ -oLIST ] [ -PARG ] [ -LARG ] [ -IDIR ] + [ FILES... ] + + The command line format for `gtroff' is as follows. + + + gtroff [ -abcivzCERU ] [ -wNAME ] [ -WNAME ] [ -dCS ] + [ -fFAM ] [ -mNAME ] [ -nNUM ] + [ -oLIST ] [ -rCN ] [ -TNAME ] + [ -FDIR ] [ -MDIR ] [ FILES... ] + +Obviously, many of the options to `groff' are actually passed on to +`gtroff'. + + Options without an argument can be grouped behind a single `-'. A +filename of `-' denotes the standard input. It is possible to have +whitespace between an option and its parameter. + + The `grog' command can be used to guess the correct `groff' command +to format a file. + + Here's the description of the command-line options: + +`-h' + Print a help message. + +`-e' + Preprocess with `geqn'. + +`-t' + Preprocess with `gtbl'. + +`-g' + Preprocess with `ggrn'. + +`-G' + Preprocess with `grap'. + +`-p' + Preprocess with `gpic'. + +`-s' + Preprocess with `gsoelim'. + +`-c' + Suppress color output. + +`-R' + Preprocess with `grefer'. No mechanism is provided for passing + arguments to `grefer' because most `grefer' options have + equivalent commands which can be included in the file. *Note + grefer::, for more details. + + Note that `gtroff' also accepts a `-R' option, which is not + accessible via `groff'. This option prevents the loading of the + `troffrc' and `troffrc-end' files. + +`-v' + Make programs run by `groff' print out their version number. + +`-V' + Print the pipeline on `stdout' instead of executing it. + +`-z' + Suppress output from `gtroff'. Only error messages are printed. + +`-Z' + Do not postprocess the output of `gtroff'. Normally `groff' + automatically runs the appropriate postprocessor. + +`-PARG' + Pass ARG to the postprocessor. Each argument should be passed + with a separate `-P' option. Note that `groff' does not prepend + `-' to ARG before passing it to the postprocessor. + +`-l' + Send the output to a spooler for printing. The command used for + this is specified by the `print' command in the device description + file (see *Note Font Files::, for more info). If not present, + `-l' is ignored. + +`-LARG' + Pass ARG to the spooler. Each argument should be passed with a + separate `-L' option. Note that `groff' does not prepend a `-' to + ARG before passing it to the postprocessor. If the `print' + keyword in the device description file is missing, `-L' is ignored. + +`-TDEV' + Prepare output for device DEV. The default device is `ps', unless + changed when `groff' was configured and built. The following are + the output devices currently available: + + `ps' + For POSTSCRIPT printers and previewers. + + `dvi' + For TeX DVI format. + + `X75' + For a 75dpi X11 previewer. + + `X75-12' + For a 75dpi X11 previewer with a 12pt base font in the + document. + + `X100' + For a 100dpi X11 previewer. + + `X100-12' + For a 100dpi X11 previewer with a 12pt base font in the + document. + + `ascii' + For typewriter-like devices using the (7-bit) ASCII character + set. + + `latin1' + For typewriter-like devices that support the Latin-1 + (ISO 8859-1) character set. + + `utf8' + For typewriter-like devices which use the Unicode (ISO 10646) + character set with UTF-8 encoding. + + `cp1047' + For typewriter-like devices which use the EBCDIC encoding IBM + cp1047. + + `lj4' + For HP LaserJet4-compatible (or other PCL5-compatible) + printers. + + `lbp' + For Canon CAPSL printers (LBP-4 and LBP-8 series laser + printers). + + `html' + To produce HTML output. Note that the HTML driver consists + of two parts, a preprocessor (`pre-grohtml') and a + postprocessor (`post-grohtml'). + + The predefined `gtroff' string register `.T' contains the current + output device; the read-only number register `.T' is set to 1 if + this option is used (which is always true if `groff' is used to + call `gtroff'). *Note Built-in Registers::. + + The postprocessor to be used for a device is specified by the + `postpro' command in the device description file. (*Note Font + Files::, for more info.) This can be overridden with the `-X' + option. + +`-X' + Preview with `gxditview' instead of using the usual postprocessor. + This is unlikely to produce good results except with `-Tps'. + + Note that this is not the same as using `-TX75' or `-TX100' to + view a document with `gxditview': The former uses the metrics of + the specified device, whereas the latter uses X-specific fonts and + metrics. + +`-N' + Don't allow newlines with `eqn' delimiters. This is the same as + the `-N' option in `geqn'. + +`-S' + Safer mode. Pass the `-S' option to `gpic' and disable the + `open', `opena', `pso', `sy', and `pi' requests. For security + reasons, this is enabled by default. + +`-U' + Unsafe mode. This enables the `open', `opena', `pso', `sy', and + `pi' requests. + +`-a' + Generate an ASCII approximation of the typeset output. The + read-only register `.A' is then set to 1. *Note Built-in + Registers::. A typical example is + + + groff -a -man -Tdvi troff.man | less + + which shows how lines are broken for the DVI device. Note that + this option is rather useless today since graphic output devices + are available virtually everywhere. + +`-b' + Print a backtrace with each warning or error message. This + backtrace should help track down the cause of the error. The line + numbers given in the backtrace may not always be correct: `gtroff' + can get confused by `as' or `am' requests while counting line + numbers. + +`-i' + Read the standard input after all the named input files have been + processed. + +`-wNAME' + Enable warning NAME. Available warnings are described in *Note + Debugging::. Multiple `-w' options are allowed. + +`-WNAME' + Inhibit warning NAME. Multiple `-W' options are allowed. + +`-E' + Inhibit all error messages. + +`-C' + Enable compatibility mode. *Note Implementation Differences::, + for the list of incompatibilities between `groff' and AT&T `troff'. + +`-dCS' +`-dNAME=S' + Define C or NAME to be a string S. C must be a one-letter name; + NAME can be of arbitrary length. All string assignments happen + before loading any macro file (including the start-up file). + +`-fFAM' + Use FAM as the default font family. *Note Font Families::. + +`-mNAME' + Read in the file `NAME.tmac'. Normally `groff' searches for this + in its macro directories. If it isn't found, it tries `tmac.NAME' + (searching in the same directories). + +`-nNUM' + Number the first page NUM. + +`-oLIST' + Output only pages in LIST, which is a comma-separated list of page + ranges; `N' means print page N, `M-N' means print every page + between M and N, `-N' means print every page up to N, `N-' means + print every page beginning with N. `gtroff' exits after printing + the last page in the list. All the ranges are inclusive on both + ends. + + Within `gtroff', this information can be extracted with the `.P' + register. *Note Built-in Registers::. + + If your document restarts page numbering at the beginning of each + chapter, then `gtroff' prints the specified page range for each + chapter. + +`-rCN' +`-rNAME=N' + Set number register C or NAME to the value N. C must be a + one-letter name; NAME can be of arbitrary length. N can be any + `gtroff' numeric expression. All register assignments happen + before loading any macro file (including the start-up file). + +`-FDIR' + Search `DIR' for subdirectories `devNAME' (NAME is the name of the + device), for the `DESC' file, and for font files before looking in + the standard directories (*note Font Directories::). This option + is passed to all pre- and postprocessors using the + `GROFF_FONT_PATH' environment variable. + +`-MDIR' + Search directory `DIR' for macro files before the standard + directories (*note Macro Directories::). + +`-IDIR' + This option is as described in *Note gsoelim::. It implies the + `-s' option. + + +File: groff, Node: Environment, Next: Macro Directories, Prev: Groff Options, Up: Invoking groff + +Environment +=========== + + There are also several environment variables (of the operating +system, not within `gtroff') which can modify the behavior of `groff'. + +`GROFF_COMMAND_PREFIX' + If this is set to X, then `groff' runs `Xtroff' instead of + `gtroff'. This also applies to `tbl', `pic', `eqn', `grn', + `refer', and `soelim'. It does not apply to `grops', `grodvi', + `grotty', `pre-grohtml', `post-grohtml', `grolj4', and `gxditview'. + + The default command prefix is determined during the installation + process. If a non-GNU troff system is found, prefix `g' is used, + none otherwise. + +`GROFF_TMAC_PATH' + A colon-separated list of directories in which to search for macro + files (before the default directories are tried). *Note Macro + Directories::. + +`GROFF_TYPESETTER' + The default output device. + +`GROFF_FONT_PATH' + A colon-separated list of directories in which to search for the + `dev'NAME directory (before the default directories are tried). + *Note Font Directories::. + +`GROFF_BIN_PATH' + This search path, followed by `PATH', is used for commands executed + by `groff'. + +`GROFF_TMPDIR' + The directory in which `groff' creates temporary files. If this is + not set and `TMPDIR' is set, temporary files are created in that + directory. Otherwise temporary files are created in a + system-dependent default directory (on Unix and GNU/Linux systems, + this is usually `/tmp'). `grops', `grefer', `pre-grohtml', and + `post-grohtml' can create temporary files in this directory. + + Note that MS-DOS and MS-Windows ports of `groff' use semi-colons, +rather than colons, to separate the directories in the lists described +above. + + +File: groff, Node: Macro Directories, Next: Font Directories, Prev: Environment, Up: Invoking groff + +Macro Directories +================= + + All macro file names must be named `NAME.tmac' or `tmac.NAME' to +make the `-mNAME' command line option work. The `mso' request doesn't +have this restriction; any file name can be used, and `gtroff' won't +try to append or prepend the `tmac' string. + + Macro files are kept in the "tmac directories", all of which +constitute the "tmac path". The elements of the search path for macro +files are (in that order): + + * The directories specified with `gtroff''s or `groff''s `-M' + command line option. + + * The directories given in the `GROFF_TMAC_PATH' environment + variable. + + * The current directory (only if in unsafe mode using the `-U' + command line switch). + + * The home directory. + + * A platform-dependent directory, a site-specific + (platform-independent) directory, and the main tmac directory; the + default locations are + + + /usr/local/lib/groff/site-tmac + /usr/local/share/groff/site-tmac + /usr/local/share/groff/1.18/tmac + + assuming that the version of `groff' is 1.18, and the installation + prefix was `/usr/local'. It is possible to fine-tune those + directories during the installation process. + + +File: groff, Node: Font Directories, Next: Invocation Examples, Prev: Macro Directories, Up: Invoking groff + +Font Directories +================ + + Basically, there is no restriction how font files for `groff' are +named and how long font names are; however, to make the font family +mechanism work (*note Font Families::), fonts within a family should +start with the family name, followed by the shape. For example, the +Times family uses `T' for the family name and `R', `B', `I', and `BI' +to indicate the shapes `roman', `bold', `italic', and `bold italic', +respectively. Thus the final font names are `TR', `TB', `TI', and +`TBI'. + + All font files are kept in the "font directories" which constitute +the "font path". The file search functions will always append the +directory `dev'NAME, where NAME is the name of the output device. +Assuming, say, DVI output, and `/foo/bar' as a font directory, the font +files for `grodvi' must be in `/foo/bar/devdvi'. + + The elements of the search path for font files are (in that order): + + * The directories specified with `gtroff''s or `groff''s `-F' + command line option. All device drivers and some preprocessors + also have this option. + + * The directories given in the `GROFF_FONT_PATH' environment + variable. + + * A site-specific directory and the main font directory; the default + locations are + + + /usr/local/share/groff/site-font + /usr/local/share/groff/1.18/font + + assuming that the version of `groff' is 1.18, and the installation + prefix was `/usr/local'. It is possible to fine-tune those + directories during the installation process. + + +File: groff, Node: Invocation Examples, Prev: Font Directories, Up: Invoking groff + +Invocation Examples +=================== + + This section lists several common uses of `groff' and the +corresponding command lines. + + + groff file + +This command processes `file' without a macro package or a +preprocessor. The output device is the default, `ps', and the output +is sent to `stdout'. + + + groff -t -mandoc -Tascii file | less + +This is basically what a call to the `man' program does. `gtroff' +processes the manual page `file' with the `mandoc' macro file (which in +turn either calls the `man' or the `mdoc' macro package), using the +`tbl' preprocessor and the ASCII output device. Finally, the `less' +pager displays the result. + + + groff -X -m me file + +Preview `file' with `gxditview', using the `me' macro package. Since +no `-T' option is specified, use the default device (`ps'). Note that +you can either say `-m me' or `-me'; the latter is an anachronism from +the early days of UNIX.(1) (*note Invocation Examples-Footnote-1::) + + + groff -man -rD1 -z file + +Check `file' with the `man' macro package, forcing double-sided +printing - don't produce any output. + +* Menu: + +* grog:: + + +File: groff, Node: Invocation Examples-Footnotes, Up: Invocation Examples + + (1) The same is true for the other main macro packages that come +with `groff': `man', `mdoc', `ms', `mm', and `mandoc'. This won't work +in general; for example, to load `trace.tmac', either `-mtrace' or +`-m trace' must be used. + + +File: groff, Node: grog, Prev: Invocation Examples, Up: Invocation Examples + +`grog' +------ + + `grog' reads files, guesses which of the `groff' preprocessors +and/or macro packages are required for formatting them, and prints the +`groff' command including those options on the standard output. It +generates one or more of the options `-e', `-man', `-me', `-mm', +`-mom', `-ms', `-mdoc', `-mdoc-old', `-p', `-R', `-g', `-G', `-s', and +`-t'. + + A special file name `-' refers to the standard input. Specifying no +files also means to read the standard input. Any specified options are +included in the printed command. No space is allowed between options +and their arguments. The only options recognized are `-C' (which is +also passed on) to enable compatibility mode, and `-v' to print the +version number and exit. + + For example, + + + grog -Tdvi paper.ms + +guesses the appropriate command to print `paper.ms' and then prints it +to the command line after adding the `-Tdvi' option. For direct +execution, enclose the call to `grog' in backquotes at the UNIX shell +prompt: + + + `grog -Tdvi paper.ms` > paper.dvi + +As seen in the example, it is still necessary to redirect the output to +something meaningful (i.e. either a file or a pager program like +`less'). + + +File: groff, Node: Tutorial for Macro Users, Next: Macro Packages, Prev: Invoking groff, Up: Top + +Tutorial for Macro Users +************************ + + Most users tend to use a macro package to format their papers. This +means that the whole breadth of `groff' is not necessary for most +people. This chapter covers the material needed to efficiently use a +macro package. + +* Menu: + +* Basics:: +* Common Features:: + + +File: groff, Node: Basics, Next: Common Features, Prev: Tutorial for Macro Users, Up: Tutorial for Macro Users + +Basics +====== + + This section covers some of the basic concepts necessary to +understand how to use a macro package.(1) (*note Basics-Footnote-1::) +References are made throughout to more detailed information, if desired. + + `gtroff' reads an input file prepared by the user and outputs a +formatted document suitable for publication or framing. The input +consists of text, or words to be printed, and embedded commands +("requests" and "escapes"), which tell `gtroff' how to format the +output. For more detail on this, see *Note Embedded Commands::. + + The word "argument" is used in this chapter to mean a word or number +which appears on the same line as a request, and which modifies the +meaning of that request. For example, the request + + + .sp + +spaces one line, but + + + .sp 4 + +spaces four lines. The number 4 is an argument to the `sp' request +which says to space four lines instead of one. Arguments are separated +from the request and from each other by spaces (_no_ tabs). More +details on this can be found in *Note Request Arguments::. + + The primary function of `gtroff' is to collect words from input +lines, fill output lines with those words, justify the right-hand margin +by inserting extra spaces in the line, and output the result. For +example, the input: + + + Now is the time + for all good men + to come to the aid + of their party. + Four score and seven + years ago, etc. + +is read, packed onto output lines, and justified to produce: + + Now is the time for all good men to come to the aid of their party. + Four score and seven years ago, etc. + + Sometimes a new output line should be started even though the current +line is not yet full; for example, at the end of a paragraph. To do +this it is possible to cause a "break", which starts a new output line. +Some requests cause a break automatically, as normally do blank input +lines and input lines beginning with a space. + + Not all input lines are text to be formatted. Some input lines are +requests which describe how to format the text. Requests always have a +period (`.') or an apostrophe (`'') as the first character of the input +line. + + The text formatter also does more complex things, such as +automatically numbering pages, skipping over page boundaries, putting +footnotes in the correct place, and so forth. + + Here are a few hints for preparing text for input to `gtroff'. + + * First, keep the input lines short. Short input lines are easier to + edit, and `gtroff' packs words onto longer lines anyhow. + + * In keeping with this, it is helpful to begin a new line after every + comma or phrase, since common corrections are to add or delete + sentences or phrases. + + * End each sentence with two spaces - or better, start each sentence + on a new line. `gtroff' recognizes characters that usually end a + sentence, and inserts sentence space accordingly. + + * Do not hyphenate words at the end of lines - `gtroff' is smart + enough to hyphenate words as needed, but is not smart enough to + take hyphens out and join a word back together. Also, words such + as "mother-in-law" should not be broken over a line, since then a + space can occur where not wanted, such as "mother- in-law". + + `gtroff' double-spaces output text automatically if you use the +request `.ls 2'. Reactivate single-spaced mode by typing `.ls 1'.(2) +(*note Basics-Footnote-2::) + + A number of requests allow to change the way the output looks, +sometimes called the "layout" of the output page. Most of these +requests adjust the placing of "whitespace" (blank lines or spaces). + + The `bp' request starts a new page, causing a line break. + + The request `.sp N' leaves N lines of blank space. N can be omitted +(meaning skip a single line) or can be of the form Ni (for N inches) or +Nc (for N centimeters). For example, the input: + + + .sp 1.5i + My thoughts on the subject + .sp + +leaves one and a half inches of space, followed by the line "My +thoughts on the subject", followed by a single blank line (more +measurement units are available, see *Note Measurements::). + + Text lines can be centered by using the `ce' request. The line +after `ce' is centered (horizontally) on the page. To center more than +one line, use `.ce N' (where N is the number of lines to center), +followed by the N lines. To center many lines without counting them, +type: + + + .ce 1000 + lines to center + .ce 0 + +The `.ce 0' request tells `groff' to center zero more lines, in other +words, stop centering. + + All of these requests cause a break; that is, they always start a new +line. To start a new line without performing any other action, use +`br'. + + +File: groff, Node: Basics-Footnotes, Up: Basics + + (1) This section is derived from `Writing Papers with nroff using +-me' by Eric P. Allman. + + (2) If you need finer granularity of the vertical space, use the +`pvs' request (*note Changing Type Sizes::). + + +File: groff, Node: Common Features, Prev: Basics, Up: Tutorial for Macro Users + +Common Features +=============== + + `gtroff' provides very low-level operations for formatting a +document. There are many common routine operations which are done in +all documents. These common operations are written into "macros" and +collected into a "macro package". + + All macro packages provide certain common capabilities which fall +into the following categories. + +* Menu: + +* Paragraphs:: +* Sections and Chapters:: +* Headers and Footers:: +* Page Layout Adjustment:: +* Displays:: +* Footnotes and Annotations:: +* Table of Contents:: +* Indices:: +* Paper Formats:: +* Multiple Columns:: +* Font and Size Changes:: +* Predefined Strings:: +* Preprocessor Support:: +* Configuration and Customization:: + + +File: groff, Node: Paragraphs, Next: Sections and Chapters, Prev: Common Features, Up: Common Features + +Paragraphs +---------- + + One of the most common and most used capability is starting a +paragraph. There are a number of different types of paragraphs, any of +which can be initiated with macros supplied by the macro package. +Normally, paragraphs start with a blank line and the first line +indented, like the text in this manual. There are also block style +paragraphs, which omit the indentation: + + + Some men look at constitutions with sanctimonious + reverence, and deem them like the ark of the covenant, too + sacred to be touched. + +And there are also indented paragraphs which begin with a tag or label +at the margin and the remaining text indented. + + + one This is the first paragraph. Notice how the first + line of the resulting paragraph lines up with the + other lines in the paragraph. + + + longlabel + This paragraph had a long label. The first + character of text on the first line does not line up + with the text on second and subsequent lines, + although they line up with each other. + + A variation of this is a bulleted list. + + + . Bulleted lists start with a bullet. It is possible + to use other glyphs instead of the bullet. In nroff + mode using the ASCII character set for output, a dot + is used instead of a real bullet. + + +File: groff, Node: Sections and Chapters, Next: Headers and Footers, Prev: Paragraphs, Up: Common Features + +Sections and Chapters +--------------------- + + Most macro packages supply some form of section headers. The +simplest kind is simply the heading on a line by itself in bold type. +Others supply automatically numbered section heading or different +heading styles at different levels. Some, more sophisticated, macro +packages supply macros for starting chapters and appendices. + + +File: groff, Node: Headers and Footers, Next: Page Layout Adjustment, Prev: Sections and Chapters, Up: Common Features + +Headers and Footers +------------------- + + Every macro package gives some way to manipulate the "headers" and +"footers" (also called "titles") on each page. This is text put at the +top and bottom of each page, respectively, which contain data like the +current page number, the current chapter title, and so on. Its +appearance is not affected by the running text. Some packages allow +for different ones on the even and odd pages (for material printed in a +book form). + + The titles are called "three-part titles", that is, there is a +left-justified part, a centered part, and a right-justified part. An +automatically generated page number may be put in any of these fields +with the `%' character (see *Note Page Layout::, for more details). + + +File: groff, Node: Page Layout Adjustment, Next: Displays, Prev: Headers and Footers, Up: Common Features + +Page Layout +----------- + + Most macro packages let the user specify top and bottom margins and +other details about the appearance of the printed pages. + + +File: groff, Node: Displays, Next: Footnotes and Annotations, Prev: Page Layout Adjustment, Up: Common Features + +Displays +-------- + + "Displays" are sections of text to be set off from the body of the +paper. Major quotes, tables, and figures are types of displays, as are +all the examples used in this document. + + "Major quotes" are quotes which are several lines long, and hence +are set in from the rest of the text without quote marks around them. + + A "list" is an indented, single-spaced, unfilled display. Lists +should be used when the material to be printed should not be filled and +justified like normal text, such as columns of figures or the examples +used in this paper. + + A "keep" is a display of lines which are kept on a single page if +possible. An example for a keep might be a diagram. Keeps differ from +lists in that lists may be broken over a page boundary whereas keeps are +not. + + "Floating keeps" move relative to the text. Hence, they are good for +things which are referred to by name, such as "See figure 3". A +floating keep appears at the bottom of the current page if it fits; +otherwise, it appears at the top of the next page. Meanwhile, the +surrounding text `flows' around the keep, thus leaving no blank areas. + + +File: groff, Node: Footnotes and Annotations, Next: Table of Contents, Prev: Displays, Up: Common Features + +Footnotes and Annotations +------------------------- + + There are a number of requests to save text for later printing. + + "Footnotes" are printed at the bottom of the current page. + + "Delayed text" is very similar to a footnote except that it is +printed when called for explicitly. This allows a list of references to +appear (for example) at the end of each chapter, as is the convention in +some disciplines. + + Most macro packages which supply this functionality also supply a +means of automatically numbering either type of annotation. + + +File: groff, Node: Table of Contents, Next: Indices, Prev: Footnotes and Annotations, Up: Common Features + +Table of Contents +----------------- + + "Tables of contents" are a type of delayed text having a tag +(usually the page number) attached to each entry after a row of dots. +The table accumulates throughout the paper until printed, usually after +the paper has ended. Many macro packages provide the ability to have +several tables of contents (e.g. a standard table of contents, a list +of tables, etc). + + +File: groff, Node: Indices, Next: Paper Formats, Prev: Table of Contents, Up: Common Features + +Indices +------- + + While some macro packages use the term "index", none actually +provide that functionality. The facilities they call indices are +actually more appropriate for tables of contents. + + To produce a real index in a document, external tools like the +`makeindex' program are necessary. + + +File: groff, Node: Paper Formats, Next: Multiple Columns, Prev: Indices, Up: Common Features + +Paper Formats +------------- + + Some macro packages provide stock formats for various kinds of +documents. Many of them provide a common format for the title and +opening pages of a technical paper. The `mm' macros in particular +provide formats for letters and memoranda. + + +File: groff, Node: Multiple Columns, Next: Font and Size Changes, Prev: Paper Formats, Up: Common Features + +Multiple Columns +---------------- + + Some macro packages (but not `man') provide the ability to have two +or more columns on a page. + + +File: groff, Node: Font and Size Changes, Next: Predefined Strings, Prev: Multiple Columns, Up: Common Features + +Font and Size Changes +--------------------- + + The built-in font and size functions are not always intuitive, so all +macro packages provide macros to make these operations simpler. + + +File: groff, Node: Predefined Strings, Next: Preprocessor Support, Prev: Font and Size Changes, Up: Common Features + +Predefined Strings +------------------ + + Most macro packages provide various predefined strings for a variety +of uses; examples are sub- and superscripts, printable dates, quotes and +various special characters. + + +File: groff, Node: Preprocessor Support, Next: Configuration and Customization, Prev: Predefined Strings, Up: Common Features + +Preprocessor Support +-------------------- + + All macro packages provide support for various preprocessors and may +extend their functionality. + + For example, all macro packages mark tables (which are processed with +`gtbl') by placing them between `TS' and `TE' macros. The `ms' macro +package has an option, `.TS H', that prints a caption at the top of a +new page (when the table is too long to fit on a single page). + + +File: groff, Node: Configuration and Customization, Prev: Preprocessor Support, Up: Common Features + +Configuration and Customization +------------------------------- + + Some macro packages provide means of customizing many of the details +of how the package behaves. This ranges from setting the default type +size to changing the appearance of section headers. + + +File: groff, Node: Macro Packages, Next: gtroff Reference, Prev: Tutorial for Macro Users, Up: Top + +Macro Packages +************** + + This chapter documents the main macro packages that come with +`groff'. + +* Menu: + +* man:: +* mdoc:: +* ms:: +* me:: +* mm:: + + +File: groff, Node: man, Next: mdoc, Prev: Macro Packages, Up: Macro Packages + +`man' +===== + + This is the most popular and probably the most important macro +package of `groff'. It is easy to use, and a vast majority of manual +pages are based on it. + +* Menu: + +* Man options:: +* Man usage:: +* Man font macros:: +* Miscellaneous man macros:: +* Predefined man strings:: +* Preprocessors in man pages:: + + +File: groff, Node: Man options, Next: Man usage, Prev: man, Up: man + +Options +------- + + The command line format for using the `man' macros with `groff' is: + + + groff -m man [ -rLL=LENGTH ] [ -rLT=LENGTH ] + [ -rcR=1 ] [ -rC1 ] [ -rD1 ] [ -rPNNN ] + [ -rSXX ] [ -rXNNN ] [ FILES... ] + +It is possible to use `-man' instead of `-m man'. + +`-rLL=LENGTH' + Set line length to LENGTH. If not specified, the line length + defaults to 78 en in nroff mode (this is 78 characters per line) + and 6.5 inch otherwise. + +`-rLT=LENGTH' + Set title length to LENGTH. If not specified, the title length + defaults to 78 en in nroff mode (this is 78 characters per line) + and 6.5 inch otherwise. + +`-rcR=1' + This option (the default if a TTY output device is used) creates a + single, very long page instead of multiple pages. Use `-rcR=0' to + disable it. + +`-rC1' + If more than one manual page is given on the command line, number + the pages continuously, rather than starting each at 1. + +`-rD1' + Double-sided printing. Footers for even and odd pages are + formatted differently. + +`-rPNNN' + Page numbering starts with NNN rather than with 1. + +`-rSXX' + Use XX (which can be 10, 11, or 12pt) as the base document font + size instead of the default value of 10pt. + +`-rXNNN' + After page NNN, number pages as NNNa, NNNb, NNNc, etc. For + example, the option `-rX2' produces the following page numbers: 1, + 2, 2a, 2b, 2c, etc. + -- cgit v1.1