groffer

GROFFER(1)                   General Commands Manual                  GROFFER(1)



NAME
       groffer - display groff files and man pages on X and tty

SYNOPSIS
groffer [option...] [--] [filespec...]
groffer -h|--help
groffer -v|--version

DESCRIPTION
       The groffer program is the easiest way to use groff(1).  It can display
       arbitrary documents written in the groff language, see groff(7), or other
       roff languages, see roff(7), that are compatible to the original troff
       language.  The groffer program also includes many of the features for
       finding and displaying the Unix manual pages (man_pages), such that it
       can be used as a replacement for a man(1) program.  Moreover, compressed
       files that can be handled by gzip(1) or bzip2(1) are decompressed on-the-
       fly.

       The normal usage is quite simple by supplying a file name or name of a
       man_page without further options.  But the option handling has many
       possibilities for creating special behaviors.  This can be done either in
       configuration files, with the shell environment variable $GROFFER_OPT, or
       on the command line.

       The output can be generated and viewed in several different ways
       available for groff.  This includes the groff native X Window viewer
       gxditview(1), each Postcript, pdf, or dvi display program, a web browser
       by generating html in www_mode, or several text_modes in text terminals.

       Most of the options that must be named when running groff directly are
       determined automatically for groffer, due to the internal usage of the
       grog(1) program.  But all parts can also be controlled manually by
       arguments.

       Several file names can be specified on the command line arguments.  They
       are transformed into a single document in the normal way of groff.

       Option handling is done in GNU style.  Options and file names can be
       mixed freely.  The option `--' closes the option handling, all following
       arguments are treated as file names.  Long options can be abbreviated.

OPTION OVERVIEW
       breaking options

              [-h|--help] [-v|--version]

       groffer mode options

              [--auto] [--default] [--default-modes mode1,mode2,...] [--dvi]
              [--dvi-viewer prog] [--dvi-viewer-tty prog] [--groff] [--html]
              [--html-viewer prog] [--html-viewer-tty prog] [--mode
              display_mode] [--pdf] [--pdf-viewer prog] [--pdf-viewer-tty prog]
              [--ps] [--ps-viewer prog] [--ps-viewer-tty prog] [--text] [--tty]
              [--tty-viewer prog] [--tty-viewer-tty prog] [--www] [--www-viewer
              prog] [--www-viewer- prog] [--x|--X] [--x-viewer|--X-viewer prog]
              [--x-viewer-tty|--X-viewer-tty prog]

       development options

              [--debug] [--do-nothing] [--shell prog] [-Q|--source] [-V]

       options related to groff

              [-T|--device device] [-Z|--intermediate-output|--ditroff]

              All further groff short options are accepted.

       options for man_pages
              [--apropos] [--apropos-data] [--apropos-devel] [--apropos-progs]
              [--whatis] [--man] [--no-man] [--no-special]

       long options taken over from GNU man

              [--all] [--ascii] [--ditroff] [--extension suffix] [--locale
              language] [--local-file] [--manpath dir1:dir2:...] [--pager
              program] [--sections sec1:sec2:...] [--systems sys1,sys2,...]
              [--troff-device device]

              Further long options of GNU man are accepted as well.

       X Window Toolkit options

              [--bd pixels] [--bg|--background color] [--bw pixels] [--display
              X-display] [--fg|--foreground color] [--ft|--font font_name]
              [--geometry size_pos] [--resolution value] [--rv] [--title string]
              [--xrm X-resource]

       filespec arguments

              No filespec parameters means standard input.

              -         stands for standard input (can occur several times).

              filename  the path name of an existing file.

              man:name(section)

              name(section)
                        search the man page name in man section section.

              man:name.s

              name.s    if s is a character in [1-9on], search for a man page
                        name in man section s.

              man:name  man page in the lowest man section that has name.

              s name    if s is a character in [1-9on], search for a man page
                        name in man section s.

              name      if name is not an existing file search for the man page
                        name in the lowest man section.

OPTION DETAILS
       The groffer program can usually be run with very few options.  But for
       special purposes, it supports many options.  These can be classified in 5
       option classes.

       All short options of groffer are compatible with the short options of
       groff(1).  All long options of groffer are compatible with the long
       options of man(1).

   groffer breaking Options
       As soon as one of these options is found on the command line it is
       executed, printed to standard output, and the running groffer is
       terminated thereafter.  All other arguments are ignored.

       -h | --help
              Print a helping information with a short explanation of option sto
              standard output.

       -v | --version
              Print version information to standard output.

   groffer Mode Options
       The display mode and the viewer programs are determined by these options.
       If none of these mode and viewer options is specified groffer tries to
       find a suitable display mode automatically.  The default modes are mode x
       with gxditview in X Window and mode tty with device latin1 under less on
       a terminal.

       There are two kinds of options for viewers.  --mode-viewer chooses the
       normal viewer programs that run on their own in X Window, while
       --mode-viewer-tty chooses programs that run on the terminal (on tty).
       Most graphical viewers are programs running in X Window, so there aren't
       many opportunities to call the tty viewers.  But they give the chance to
       view the output source; for example, --ps-viewer-tty=less shows the
       content of the Postscript output with the pager less.

       The X Window viewers are not critical, you can use both --*-viewer and
       --*-viewer-tty for them; with --*-viewer-tty the viewer program will not
       become independently, it just stays coupled with groffer.  But the
       program will not run if you specify a terminal program with --*-viewer
       because this viewer will stay in background without a chance to reach it.
       So you really need --*-viewer-tty for viewers that run on tty.

       --auto Equivalent to --mode=auto.

       --default
              Reset all configuration from previously processed command line
              options to the default values.  This is useful to wipe out all
              former options of the configuration, in $GROFFER_OPT, and restart
              option processing using only the rest of the command line.

       --default-modes mode1,mode2,...
              Set the sequence of modes for auto_mode to the comma separated
              list given in the argument.  See --mode for details on modes.
              Display in the default manner; actually, this means to try the
              modes x, ps, and tty in this sequence.

       --dvi  Equivalent to --mode=dvi.

       --dvi-viewer prog
              Choose an X Window viewer program for dvi_mode.  This can be a
              file name or a program to be searched in $PATH. Known X Window dvi
              viewers include xdvi(1) and dvilx(1) In each case, arguments can
              be provided additionally.

       --dvi-viewer-tty prog
              Choose a program running on the terminal for viewing the output of
              dvi_mode.  This can be a file name or a program to be searched in
              $PATH; arguments can be provided additionally.

       --groff
              Equivalent to --mode=groff.

       --html Equivalent to --mode=html.

       --html-viewer
              Choose an X Window web browser program for viewing in html_mode .
              It can be the path name of an executable file or a program in
              $PATH. In each case, arguments can be provided additionally.

       --html-viewer-tty
              Choose a terminal program for viewing the output of html_mode .
              It can be the path name of an executable file or a program in
              $PATH; arguments can be provided additionally.

       --mode value
              Set the display mode.  The following mode values are recognized:

              auto   Select the automatic determination of the display mode.
                     The sequence of modes that are tried can be set with the
                     --default-modes option.  Useful for restoring the
                     default_mode when a different mode was specified before.

              dvi    Display formatted input in a dvi viewer program.  By
                     default, the formatted input is displayed with the xdvi(1)
                     program.  --dvi.

              groff  After the file determination, switch groffer to process the
                     input like groff(1) would do.  This disables the groffer
                     viewing features.

              html   Translate the input into html format and display the result
                     in a web browser program.  By default, the existence of a
                     sequence of standard web browsers is tested, starting with
                     konqueror(1) and mozilla(1).  The text html viewer is
                     lynx(1).

              pdf    Display formatted input in a PDF (Portable Document Format)
                     viewer program.  By default, the input is formatted by
                     groff using the Postscript device, then it is transformed
                     into the PDF file format using gs(1), and finally displayed
                     either with the xpdf(1) or the acroread(1) program.  PDF
                     has a big advantage because the text is displayed
                     graphically and is searchable as well.  But as the
                     transformation takes a considerable amount of time, this
                     mode is not suitable as a default device for the auto_mode
                     .

              ps     Display formatted input in a Postscript viewer program.  By
                     default, the formatted input is displayed with the
                     ghostview(1) program.

              text   Format in a groff_text_mode and write the result to
                     standard output without a pager or viewer program.  The
                     text device, latin1 by default, can be chosen with option
                     -T.

              tty    Format in a groff_text_mode and write the result to
                     standard output using a text pager program, even when in
                     X Window.

              www    Equivalent to --mode=html.

              x      Display the formatted input in a native roff viewer.  By
                     default, the formatted input is displayed with the
                     gxditview(1) program being distributed together with groff.
                     But the standard X Window tool xditview(1) can also be
                     chosen with the option --x-viewer. The default resolution
                     is 75 dpi, but 100 dpi are also possible.  The default
                     groff device for the resolution of 75 dpi is X75-12, for
                     100 dpi it is X100.  The corresponding groff intermediate
                     output for the actual device is generated and the result is
                     displayed.  For a resolution of 100 dpi, the default width
                     of the geometry of the display program is chosen to
                     850 dpi.

              X      Equivalent to --mode=x.

              The following modes do not use the groffer viewing features.  They
              are only interesting for advanced applications.

              groff  Generate device output with plain groff without using the
                     special viewing features of groffer.  If no device was
                     specified by option -T the groff default ps is assumed.

              source Display the source code of the input without formatting;
                     equivalent to -Q.

       --pdf  Equivalent to --mode=pdf.

       --pdf-viewer prog
              Choose an X Window viewer program for pdf_mode.  This can be a
              file name or a program to be searched in $PATH; arguments can be
              provided additionally.

       --pdf-viewer-tty prog
              Choose a terminal viewer program for pdf_mode.  This can be a file
              name or a program to be searched in $PATH; arguments can be
              provided additionally.

       --ps   Equivalent to --mode=ps.

       --ps-viewer prog
              Choose an X Window viewer program for ps_mode.  This can be a file
              name or a program to be searched in $PATH. Common Postscript
              viewers inlude gv(1), ghostview(1), and gs(1), In each case,
              arguments can be provided additionally.

       --ps-viewer-tty prog
              Choose a terminal viewer program for ps_mode.  This can be a file
              name or a program to be searched in $PATH; arguments can be
              provided additionally.

       --text Equivalent to --mode=text.

       --tty  Equivalent to --mode=tty.

       --tty-viewer prog
              Choose a text pager for mode tty.  The standard pager is less(1).
              This option is eqivalent to man option --pager=prog. The option
              argument can be a file name or a program to be searched in $PATH;
              arguments can be provided additionally.

       --tty-viewer-tty prog
              This is equivalent to --tty-viewer because the programs for tty
              mode run on a terminal anyway.

       --www  Equivalent to --mode=html.

       --www-viewer prog
              Equivalent to --html-viewer.

       --www-viewer-tty prog
              Equivalent to --html-viewer-tty.

       --X | --x
              Equivalent to --mode=x.

       --X-viewer | --x-viewer prog
              Choose an X Window viewer program for x_mode.  Suitable viewer
              programs are gxditview(1) which is the default and xditview(1).
              The argument can be any executable file or a program in $PATH;
              arguments can be provided additionally.

       --X-viewer-tty | --x-viewer-tty prog
              Choose a terminal viewer program for x_mode.  The argument can be
              any executable file or a program in $PATH; arguments can be
              provided additionally.

       --     Signals the end of option processing; all remaining arguments are
              interpreted as filespec parameters.

       Besides these, groffer accepts all short options that are valid for the
       groff(1) program.  All non-groffer options are sent unmodified via grog
       to groff.  So postprocessors, macro packages, compatibility with
       classical troff, and much more can be manually specified.

Options for Development
       --debug
              Enable five debugging informations.  The temporary files are kept
              and not deleted, the name of the temporary directory and the shell
              name for groffer2.sh are printed, the parameters are printed at
              several steps of development, and a function stack is output with
              function error_user() as well.  Neither the function call stack
              that is printed at each opening and closing of a function call nor
              the landmark information that is printed to determine how far the
              program is running are used.  This seems to be the most useful
              among all debugging options.

       --debug-all
              Enable all seven debugging informations including the function
              call stack and the landmark information.

       --debug-keep
              Enable two debugging information, the printing of the name of the
              temporary directory and the keeping of the temporary files.

       --debug-lm
              Enable one debugging information, the landmark information.

       --debug-params
              Enable one debugging information, the parameters at several steps.

       --debug-shell
              Enable one debugging information, the shell name for groffer2.sh.

       --debug-stacks
              Enable one debugging information, the function call stack.

       --debug-tmpdir
              Enable one debugging information, the name of the temporary
              directory.

       --debug-user
              Enable one debugging information, the function stack with
              error_user().

       --do-nothing
              This is like --version, but without the output; no viewer is
              started.  This makes only sense in development.

       --print=text
              Just print the argument to standard error.  This is good for
              parameter check.

       --shell shell_program
              Specify the shell under which the groffer2.sh script should be
              run.  This option overwrites the automatic shell determination of
              the program.  If the argument shell_program is empty a former
              shell option and the automatic shell determination is cancelled
              and the default shell is restored.  Some shells run considerably
              faster than the standard shell.

       -Q | --source
              Output the roff source code of the input files without further
              processing.  This is the equivalent --mode=source.

       -V     This is an advanced option for debugging only.  Instead of
              displaying the formatted input, a lot of groffer specific
              information is printed to standard output:

              • the output file name in the temporary directory,

              • the display mode of the actual groffer run,

              • the display program for viewing the output with its arguments,

              • the active parameters from the config files, the arguments in
                $GROFFER_OPT, and the arguments of the command line,

              • the pipeline that would be run by the groff program, but without
                executing it.

       Other useful debugging options are the groff option -Z and --mode=groff.

Options related to groff
       All short options of groffer are compatible with the short options of
       groff(1).  The following of groff options have either an additional
       special meaning within groffer or make sense for normal usage.

       Because of the special outputting behavior of the groff option -Z groffer
       was designed to be switched into groff_mode ; the groffer viewing
       features are disabled there.  The other groff options do not switch the
       mode, but allow to customize the formatting process.

       -a     This generates an ascii approximation of output in the text_modes.
              That could be important when the text pager has problems with
              control sequences in tty mode.

       -m file
              Add file as a groff macro file.  This is useful in case it cannot
              be recognized automatically.

       -P opt_or_arg
              Send the argument opt_or_arg as an option or option argument to
              the actual groff postprocessor.

       -T | --device devname
              This option determines groff's output device.  The most important
              devices are the text output devices for referring to the different
              character sets, such as ascii, utf8, latin1, and others.  Each of
              these arguments switches groffer into a text_mode using this
              device, to mode_tty if the actual mode is not a text_mode.  The
              following devname arguments are mapped to the corresponding
              groffer --mode=devname option: dvi, html, and ps.  All X*
              arguments are mapped to mode_x.  Each other devname argument
              switches to mode_groff using this device.

       -X     is equivalent to groff -X.  It displays the groff intermediate
              output with gxditview.  As the quality is relatively bad this
              option is deprecated; use --X instead because the x_mode uses an
              X* device for a better display.

       -Z | --intermediate-output | --ditroff
              Switch into groff_mode and format the input with the groff
              intermediate output without postprocessing; see groff_out(5).
              This is equivalent to option --ditroff of man, which can be used
              as well.

       All other groff options are supported by groffer, but they are just
       transparently transferred to groff without any intervention.  The options
       that are not explicitly handled by groffer are transparently passed to
       groff.  Therefore these transparent options are not documented here, but
       in groff(1).  Due to the automatism in groffer, none of these groff
       options should be needed, except for advanced usage.

   Options for man pages
       --apropos
              Start the apropos(1) command or facility of man(1) for searching
              the filespec arguments within all man_page descriptions.  Each
              filespec argument is taken for search as it is; section specific
              parts are not handled, such that 7 groff searches for the two
              arguments 7 and groff with a large result; for the filespec
              groff.7 nothing will be found.  The display differs from the
              apropos program by the following concepts:

              • construct a groff frame to the output of apropos,

              • each filespec argument is searched on its own.

              • the restriction by --sections is handled as well,

              • wildcard characters are allowed and handled without a further
                option.

       --apropos-data
              Show only the apropos descriptions for data documents, these are
              the man(7) sections 4, 5, and 7.  Direct section declarations are
              ignored, wildcards are accepted.

       --apropos-devel
              Show only the apropos descriptions for development documents,
              these are the man(7) sections 2, 3, and 9.  Direct section
              declarations are ignored, wildcards are accepted.

       --apropos-progs
              Show only the apropos descriptions for documents on programs,
              these are the man(7) sections 1, 6, and 8.  Direct section
              declarations are ignored, wildcards are accepted.

       --whatis
              For each filespec argument search all man_pages and display their
              description — or say that it is not a man_page.  This differs from
              man's whatis output by the following concepts

              • each retrieved file name is added,

              • local files are handled as well,

              • the display is framed by a groff output format,

              • wildcard characters are allowed without a further option.

       The following two options were added to groffer for choosing whether the
       file name arguments are interpreted as names for local files or as a
       search pattern for man_pages.  The default is looking up for local files.

       --man  Check the non-option command line arguments (filespecs) first on
              being man_pages, then whether they represent an existing file.  By
              default, a filespec is first tested whether it is an existing
              file.

       --no-man | --local-file
              Do not check for man_pages.  --local-file is the corresponding man
              option.

       --no-special
              Disable former calls of --all, --apropos*, and --whatis.

   Long options taken over from GNU man
       The long options of groffer were synchronized with the long options of
       GNU man.  All long options of GNU man are recognized, but not all of
       these options are important to groffer, so most of them are just ignored.

       In the following, the man options that have a special meaning for groffer
       are documented.

       The full set of long and short options of the GNU man program can be
       passed via the environment variable $MANOPT; see man(1) if your system
       has GNU man installed.

       --all  In searching man_pages, retrieve all suitable documents instead of
              only one.

       -7 | --ascii
              In text_modes, display ASCII translation of special characters for
              critical environment.  This is equivalent to groff -mtty_char; see
              groff_tmac(5).

       --ditroff
              Eqivalent to groffer -Z.

       --extension suffix
              Restrict man_page search to file names that have suffix appended
              to their section element.  For example, in the file name
              /usr/share/man/man3/terminfo.3ncurses.gz the man_page extension is
              ncurses.

       --locale language
              Set the language for man_pages.  This has the same effect, but
              overwrites $LANG

       --location
              Print the location of the retrieved files to standard error.

       --no-location
              Do not display the location of retrieved files; this resets a
              former call to --location. This was added by groffer.

       --manpath
              Use the specified search path for retrieving man_pages instead of
              the program defaults.  If the argument is set to the empty string
              "" the search for man_page is disabled.

       --pager
              Set the pager program in tty_mode; default is less.  This is
              equivalent to --tty-viewer.

       --sections
              Restrict searching for man_pages to the given sections, a colon-
              separated list.

       --systems
              Search for man_pages for the given operating systems; the argument
              systems is a comma-separated list.

       --where
              Eqivalent to --location.

   X Window Toolkit Options
       The following long options were adapted from the corresponding
       X Window Toolkit options.  groffer will pass them to the actual viewer
       program if it is an X Window program.  Otherwise these options are
       ignored.

       Unfortunately these options use the old style of a single minus for long
       options.  For groffer that was changed to the standard with using a
       double minus for long options, for example, groffer uses the option
       --font for the X Window option -font.

       See X(1), X(7), and the documentation on the X Window Toolkit options for
       more details on these options and their arguments.

       --background color
              Set the background color of the viewer window.

       --bd pixels
              Specifies the color of the border surrounding the viewer window.

       --bg color
              This is equivalent to --background.

       --bw pixels
              Specifies the width in pixels of the border surrounding the viewer
              window.

       --display X-display
              Set the X Window display on which the viewer program shall be
              started, see the X Window documentation for the syntax of the
              argument.

       --foreground color
              Set the foreground color of the viewer window.

       --fg color
              This is equivalent to -foreground.

       --font font_name
              Set the font used by the viewer window.  The argument is an
              X Window font name.

       --ft font_name
              This is equivalent to --ft.

       --geometry size_pos
              Set the geometry of the display window, that means its size and
              its starting position.  See X(7) for the syntax of the argument.

       --resolution value
              Set X Window resolution in dpi (dots per inch) in some viewer
              programs.  The only supported dpi values are 75 and 100.
              Actually, the default resolution for groffer is set to 75 dpi.
              The resolution also sets the default device in mode x.

       --rv   Reverse foreground and background color of the viewer window.

       --title
              Set the title for the viewer window.

       --xrm  Set X Window resource.

   Filespec Arguments
       A filespec parameter is an argument that is not an option or option
       argument.  It means an input source.  In groffer, filespec parameters are
       a file name or a template for searching man_pages.  These input sources
       are collected and composed into a single output file such as groff does.

       The strange POSIX behavior to regard all arguments behind the first non-
       option argument as filespec arguments is ignored.  The GNU behavior to
       recognize options even when mixed with filespec arguments is used
       througout.  But, as usual, the double minus argument -- ends the option
       handling and interprets all following arguments as filespec arguments; so
       the POSIX behavior can be easily adopted.

       For the following, it is necessary to know that on each system the
       man_pages are sorted according to their content into several sections.
       The classical man sections have a single-character name, either a digit
       from 1 to 9 or one of the characters n or o.  In the following, a stand-
       alone character s stands for a classical man section.  The internal
       precedence of man for searching man_pages with the same name within
       several sections goes according to the classical single-character
       sequence.  On some systems, this single character can be extended by a
       following string.  But the special groffer man_page facility is based on
       the classical single character sections.

       Each filespec parameter can have one of the following forms in decreasing
       sequence.

       • No filespec parameters means that groffer waits for standard input.
         The minus option - stands for standard input, too; it can occur several
         times.

       • Next a filespec is tested whether it is the path name of an existing
         file.  Otherwise it is assumed to be a searching pattern for a
         man_page.

       • man:name(section) and name(section) search the man page name in
         man section section, where section can be any string, but it must exist
         in the man system.

       • Next some patterns based on the classical man sections are checked.
         man:name.s and name.s search for a man page name in man section s if s
         is a classical man section mentioned above.  Otherwise a man_page named
         name.s is searched in the lowest man section .

       • Now man:name searches for a man_page in the lowest man_section that has
         a document called name.

       • The pattern s_name originates from a strange argument parsing of the
         man program.  If s is a classical man section interpret it as a search
         for a man_page called name in man section s, otherwise interpret both s
         and name as two independent filespec arguments.

       • We are left with the argument name which is not an existing file.  So
         this searches for the man_page called name in the lowest man_section
         that has a document for this name.

       Wildcards in filespec arguments are only accepted for --apropos* and
       --whatis; for normal display, they are interpreted as characters.

       Several file name arguments can be supplied.  They are mixed by groff
       into a single document.  Note that the set of option arguments must fit
       to all of these file arguments.  So they should have at least the same
       style of the groff language.

OUTPUT MODES
       By default, the groffer program collects all input into a single file,
       formats it with the groff program for a certain device, and then chooses
       a suitable viewer program.  The device and viewer process in groffer is
       called a mode.  The mode and viewer of a running groffer program is
       selected automatically, but the user can also choose it with options.
       The modes are selected by option the arguments of --mode=anymode.
       Additionally, each of this argument can be specified as an option of its
       own, such as --anymode. Most of these modes have a viewer program, which
       can be chosen by an option that is constructed like --anymode-viewer.

       Several different modes are offered, graphical modes for X Window,
       text_modes, and some direct groff_modes for debugging and development.

       By default, groffer first tries whether x_mode is possible, then ps_mode,
       and finally tty_mode.  This mode testing sequence for auto_mode can be
       changed by specifying a comma separated list of modes with the option
       --default-modes.

       The searching for man_pages and the decompression of the input are active
       in every mode.

   Graphical Display Modes
       The graphical display modes work mostly in the X Window environment (or
       similar implementations within other windowing environments).  The
       environment variable $DISPLAY and the option --display are used for
       specifying the X Window display to be used.  If this environment variable
       is empty groffer assumes that no X Window is running and changes to a
       text_mode.  You can change this automatic behavior by the option
       --default-modes.

       Known viewers for the graphical display modes and their standard X Window
       viewer progams are

       • X Window roff viewers such as gxditview(1) or xditview(1) (in x_mode),

       • in a Postscript viewer (ps_mode),

       • in a dvi viewer program (dvi_mode),

       • in a PDF viewer (pdf_mode),

       • in a web browser (html or www_mode).

       The pdf_mode has a major advantage — it is the only graphical diplay mode
       that allows to search for text within the viewer; this can be a really
       important feature.  Unfortunately, it takes some time to transform the
       input into the PDF format, so it was not chosen as the major mode.

       These graphical viewers can be customized by options of the
       X Window Toolkit.  But the groffer options use a leading double minus
       instead of the single minus used by the X Window Toolkit.

   Text modes
       There are two modes for text output, mode_text for plain output without a
       pager and mode_tty for a text output on a text terminal using some pager
       program.

       If the variable $DISPLAY is not set or empty, groffer assumes that it
       should use tty_mode.

       In the actual implementation, the groff output device latin1 is chosen
       for text_modes.  This can be changed by specifying option -T or --device.

       The pager to be used can be specified by one of the options --pager and
       --tty-viewer, or by the environment variable $PAGER. If all of this is
       not used the less(1) program with the option -r for correctly displaying
       control sequences is used as the default pager.

   Special Modes for Debugging and Development
       These modes use the groffer file determination and decompression.  This
       is combined into a single input file that is fed directly into groff with
       different strategy without the groffer viewing facilities.  These modes
       are regarded as advanced, they are useful for debugging and development
       purposes.

       The source_mode with option -Q and --source just displays the
       decompressed input.

       The groff_mode passes the input to groff using only some suitable options
       provided to groffer.  This enables the user to save the generated output
       into a file or pipe it into another program.

       In groff_mode, the option -Z disables post-processing, thus producing the
       groff intermediate output.  In this mode, the input is formatted, but not
       postprocessed; see groff_out(5) for details.

       All groff short options are supported by groffer.

MAN PAGE SEARCHING
       The default behavior of groffer is to first test whether a file parameter
       represents a local file; if it is not an existing file name, it is
       assumed to represent a name of a man_page.  This behavior can be modified
       by the following options.

       --man  forces to interpret all file parameters as filespecs for searching
              man_pages.

       --no-man

       --local-file
              disable the man searching; so only local files are displayed.

       If neither a local file nor a man_page was retrieved for some file
       parameter a warning is issued on standard error, but processing is
       continued.

       The groffer program provides a search facility for man_pages.  All long
       options, all environment variables, and most of the functionality of the
       GNU man(1) program were implemented.  This inludes the extended file
       names of man_pages, for example, the man_page of groff in man section 7
       may be stored under /usr/share/man/man7/groff.7.gz, where /usr/share/man/
       is part of the man path, the subdirectory man7 and the file extension .7
       refer to the man section 7; .gz shows the compression of the file.

       The cat_pages (preformatted man_pages) are intentionally excluded from
       the search because groffer is a roff program that wants to format by its
       own.  With the excellent performance of the actual computers, the
       preformatted man_pages aren't necessary any longer.

       The algorithm for retrieving I man pages uses five search methods.  They
       are successively tried until a method works.

       • The search path can be manually specified by using the option
         --manpath. An empty argument disables the man_page searching.  This
         overwrites the other methods.

       • If this is not available the environment variable $MANPATH is searched.

       • If this is empty, the program tries to read it from the environment
         variable $MANOPT.

       • If this does not work a reasonable default path from $PATH is searched
         for man_pages.

       • If this does not work, the manpath(1) program for determining a path of
         man directories is tried.

       After this, the path elements for the language (locale) and operating
       system specific man_pages are added to the man_path; their sequence is
       determined automatically.  For example, both /usr/share/man/linux/fr and
       /usr/share/man/fr/linux for french linux man_pages are found.  The
       language and operating system names are determined from both environment
       variables and command line options.

       The locale (language) is determined like in GNU man, that is from highest
       to lowest precedence:

       • --locale

       • $GROFFER_OPT

       • $MANOPT

       • $LCALL

       • $LC_MESSAGES

       • $LANG.

       The language locale is usually specified in the POSIX 1003.1 based
       format:

       <language>[_<territory>[.<character-set>[,<version>]]],

       but the two-letter code in <language> is sufficient for most purposes.

       If no man_pages for a complicated locale are found the country part
       consisting of the first two characters (without the `_', `.', and `,'
       parts) of the locale is searched as well.

       If still not found the corresponding man_page in the default language is
       used instead.  As usual, this default can be specified by one of C or
       POSIX.  The man_pages in the default language are usually in English.

       Several operating systems can be given by appending their names,
       separated by a comma.  This is then specified by the environment variable
       $SYSTEM or by the command line option --systems. The precedence is
       similar to the locale case above from highest to lowest precedence: Topic
       --systems

       • $GROFFER_OPT

       • $MANOPT

       • $SYSTEM.

       When searching for man_pages this man_path with the additional language
       and system specific directories is used.

       The search can further be restricted by limiting it to certain sections.
       A single section can be specified within each filespec argument, several
       sections as a colon-separated list in command line option --sections or
       environment variable $MANSECT. When no section was specified a set of
       standard sections is searched until a suitable man_page was found.

       Finally, the search can be restricted to a so-called extension.  This is
       a postfix that acts like a subsection.  It can be specified by
       --extension or environment variable $EXTENSION.

       For further details on man_page searching, see man(1).

DECOMPRESSION
       The program has a decompression facility.  If standard input or a file
       that was retrieved from the command line parameters is compressed with a
       format that is supported by either gzip(1) or bzip2(1) it is decompressed
       on-the-fly.  This includes the GNU .gz, .bz2, and the traditional .Z
       compression.  The program displays the concatenation of all decompressed
       input in the sequence that was specified on the command line.

ENVIRONMENT
       The groffer program supports many system variables, most of them by
       courtesy of other programs.  All environment variables of groff(1) and
       GNU man(1) and some standard system variables are honored.

   Native groffer Variables
       $GROFFER_OPT
              Store options for a run of groffer.  The options specified in this
              variable are overridden by the options given on the command line.
              The content of this variable is run through the shell builtin
              `eval'; so arguments containing white-space or special shell
              characters should be quoted.  Do not forget to export this
              variable, otherwise it does not exist during the run of groffer.

   System Variables
       The groffer program is a shell script that is run through /bin/sh, which
       can be internally linked to programs like bash(1).  The corresponding
       system environment is automatically effective.  The following variables
       have a special meaning for groffer.

       $DISPLAY
              If this variable is set this indicates that the X Window system is
              running.  Testing this variable decides on whether graphical or
              text output is generated.  This variable should not be changed by
              the user carelessly, but it can be used to start the graphical
              groffer on a remote X Window terminal.  For example, depending on
              your system, groffer can be started on the second monitor by the
              command

              ].groffer:Shell_cmd.prompt_text " "DISPLAY=:0.1 groffer "
              "what.ever" "&"

       $LC_ALL

       $LC_MESSAGES

       $LANG  If one of these variables is set (in the above sequence), its
              content is interpreted as the locale, the language to be used,
              especially when retrieving IR man pages .  A locale name is
              typically of the form language[_territory[.codeset[@modifier]]],
              where language is an ISO 639 language code, territory is an ISO
              3166 country code, and codeset is a character set or encoding
              identifier like ISO-8859-1 or UTF-8; see setlocale(3).  The locale
              values C and POSIX stand for the default, i.e. the man_page
              directories without a language prefix.  This is the same behavior
              as when all 3 variables are unset.

       $PAGER This variable can be used to set the pager for the tty output.
              For example, to disable the use of a pager completely set this
              variable to the cat(1) program

              ].groffer:Shell_cmd.prompt_text " "PAGER=cat groffer " "anything"

       $PATH  All programs within the groffer shell script are called without a
              fixed path.  Thus this environment variable determines the set of
              programs used within the run of groffer.

   Groff Variables
       The groffer program internally calls groff, so all environment variables
       documented in groff(1) are internally used within groffer as well.  The
       following variable has a direct meaning for the groffer program.

       $GROFF_TMPDIR
              If the value of this variable is an existing, writable directory,
              groffer uses it for storing its temporary files, just as groff
              does.

   Man Variables
       Parts of the functionality of the man program were implemented in
       groffer; support for all environment variables documented in man(1) was
       added to groffer, but the meaning was slightly modified due to the
       different approach in groffer; but the user interface is the same.  The
       man environment variables can be overwritten by options provided with
       $MANOPT, which in turn is overwritten by the command line.

       $EXTENSION
              Restrict the search for man_pages to files having this extension.
              This is overridden by option --extension; see there for details.

       $MANOPT
              This variable contains options as a preset for man(1).  As not all
              of these are relevant for groffer only the essential parts of its
              value are extracted.  The options specified in this variable
              overwrite the values of the other environment variables that are
              specific to man.  All options specified in this variable are
              overridden by the options given on the command line.

       $MANPATH
              If set, this variable contains the directories in which the
              man_page trees are stored.  This is overridden by option
              --manpath.

       $MANSECT
              If this is a colon separated list of section names, the search for
              man_pages is restricted to those manual sections in that order.
              This is overridden by option --sections.

       $SYSTEM
              If this is set to a comma separated list of names these are
              interpreted as man_page trees for different operating systems.
              This variable can be overwritten by option --systems; see there
              for details.

       The environment variable $MANROFFSEQ is ignored by groffer because the
       necessary preprocessors are determined automatically.

CONFIGURATION FILES
       The groffer program can be preconfigured by two configuration files.

       /etc/groff/groffer.conf
              System-wide configuration file for groffer.

       $HOME/.groff/groffer.conf
              User-specific configuration file for groffer, where $HOME denotes
              the user's home directory.  This file is called after the system-
              wide configuration file to enable overriding by the user.

       The precedence of option delivery is given in the following.  The
       configuration file in /etc has the lowest precedence; it is overwritten
       by the configuration file in the home directory; both configuration files
       are overwritten by the environment variable $GROFFER_OPT; everything is
       overwritten by the command line.

       In the configuration files, arbitrary spaces are allowed at the beginning
       of each line, they are just ignored.  Apart from that, the lines of the
       configuration lines either start with a minus character, all other lines
       are interpreted as shell commands.

       The lines with the beginning minus are interpreted as groffer options.
       This easily allows to set general groffer options that should be used
       with any call of groffer.  Each line can represent a single short option,
       a short option cluster, or a long option with two minus signs, eventually
       with an argument.  The argument can be appended either after a space
       character or an equal sign `='.  The argument can be surrounded by
       quotes, but this is not necessary.  The options from these lines are
       collected and prepended to the existing value of $GROFFER_OPT at the end
       of each configuration file.

       After the transformation of the minus lines, the configuration files have
       been transferred into a shell script that is called within groffer using
       the `.  filename' shell syntax.

       It makes sense to use these configuration files for the following tasks:

       • Preset command line options, such as choosing a mode or a viewer.
         These are written into lines starting with a single or double minus
         sign, followed by the option name.

       • Preset environment variables recognized by groffer; but do not forget
         to export them.

       • You can also write a shell function for calling, for example a viewer
         program for some mode.  Such a function can be fed into a corresponding
         --mode-viewer option.

       • Enter --shell to specify a shell for the run of groffer2.sh. Some
         shells run much faster than the standard shell.

       As an example, consider the following configuration file in
       ~/.groff/groffer.conf, say.

       # groffer configuration file
       #
       # groffer options that are used in each call of groffer
       --shell=ksh
       --foreground=DarkBlue
       --resolution=100
       --x-viewer='gxditview -geometry 900x1200'
       #
       # some shell commands
       if test "$DISPLAY" = ""; then
         export DISPLAY='localhost:0.0'
       fi
       date >>~/mygroffer.log

       The lines starting with # are command lines.  This configuration sets
       four groffer options (the lines starting with `-') and runs two shell
       commands (the rest of the script).  This has the following effects:

       • Use ksh as the shell to run the groffer script; if it works it should
         be faster than the usual sh.

       • Use a text color of DarkBlue in all viewers that support this, such as
         gxditview.

       • Use a resolution of 100 dpi in all viewers that support this, such as
         gxditview.  By this, the default device in x mode is set to X100.

       • Force gxditview(1) as the x-mode viewer using the geometry option for
         setting the width to 900 dpi and the height to 1200 dpi.  This geometry
         is suitable for a resolution of 100 dpi.

       • If the environment variable $DISPLAY is empty set it to localhost:0.0.
         That allows to start groffer in the standard X Window display, even
         when the program is called from a text console.

       • Just for fun, the date of each groffer start is written to the file
         mygroffer.log in the home directory.

EXAMPLES
       The usage of groffer is very easy.  Usually, it is just called with a
       file name or man_page.  The following examples, however, show that
       groffer has much more fancy capabilities.

       ].groffer:Shell_cmd.prompt_text "
       "groffer /usr/local/share/doc/groff/meintro.ms.gz" Decompress, format and
       display the compressed file meintro.ms.gz in the directory
       /usr/local/share/doc/groff, using the standard viewer gxditview as
       graphical viewer when in X Window, or the less(1) pager program when not
       in X Window.

       ].groffer:Shell_cmd.prompt_text " "groffer groff" If the file ./groff
       exists use it as input.  Otherwise interpret the argument as a search for
       the man_page named groff in the smallest possible man_section, being
       section 1 in this case.

       ].groffer:Shell_cmd.prompt_text " "groffer man:groff" search for the
       man_page of groff even when the file ./groff exists.

       ].groffer:Shell_cmd.prompt_text " "groffer groff.7"

       ].groffer:Shell_cmd.prompt_text " "groffer 7 groff" search the man_page
       of groff in man_section 7.  This section search works only for a digit or
       a single character from a small set.

       ].groffer:Shell_cmd.prompt_text " "groffer fb.modes" If the file
       ./fb.modes does not exist interpret this as a search for the man_page of
       fb.modes.  As the extension modes is not a single character in classical
       section style the argument is not split to a search for fb.

       ].groffer:Shell_cmd.prompt_text " "groffer groff ’troff(1)’ man:roff" The
       arguments that are not existing files are looked-up as the following
       man_pages: groff (automatic search, should be found in man section 1),
       troff (in section 1), and roff (in the section with the lowest number,
       being 7 in this case).  The quotes around ’troff(1)’ are necessary
       because the paranthesis are special shell characters; escaping them with
       a backslash character \( and \) would be possible, too.  The formatted
       files are concatenated and displayed in one piece.

       ].groffer:Shell_cmd.prompt_text " "LANG=de_groffer_--man_--www_--www-
       viever=galeon_ls" Retrieve the German man_page (language de) for the ls
       program, decompress it, format it to html format (www_mode) and view the
       result in the web browser galeon.  The option --man guarantees that the
       man_page is retrieved, even when a local file ls exists in the actual
       directory.

       ].groffer:Shell_cmd.prompt_text " "groffer --source 'man:roff(7)'" Get
       the man_page called roff in man section 7, decompress it, and print its
       unformatted content, its source code.

       ].groffer:Shell_cmd.prompt_text " "cat_file.gz_|_groffer_-Z_-mfoo"
       Decompress the standard input, send this to groff intermediate output
       mode without post-processing (groff option -Z), using macro package by
       foo (groff option -m)

       ].groffer:Shell_cmd.prompt_text " "echo '\f[CB]WOW!' |"

       ].groffer:Shell_cmd+.prompt_text " "groffer --x --bg red --fg yellow
       --geometry 200x100 -" Display the word WOW! in a small window in
       constant-width bold font, using color yellow on red background.

COMPATIBILITY
       The groffer program consists of two shell scripts.

       The starting script is the file groffer that is installed in a bin
       directory.  It is generated from the source file groffer.sh. It is just a
       short starting script without any functions such that it can run on very
       poor shells.

       The main part of the groffer program is the file groffer2.sh that is
       installed in the groff library directory.  This script can be run under a
       different shell by using the groffer option --shell.

       Both scripts are compatible with both GNU and POSIX.  POSIX compatibility
       refers to IEEE P1003.2/D11.2 of September 1991, a very early version of
       the POSIX standard that is still freely available in the internet at

       Only a restricted set of shell language elements and shell builtins is
       used to achieve even compatibility with some Bourne shells that are not
       fully POSIX compatible.  The groffer shell scripts were tested on many
       shells, including the following Bourne shells: ash(1), bash(1), dash(1),
       ksh(1), pdksh(1), posh(1), and zsh(1).  So it should work on most actual
       free and commercial operating systems.

       The shell for the run of groffer2.sh can be chosen by the option --shell
       on the command line or the environment variable $GROFF_OPT. If you want
       to add it to one of the groffer configuration files you must write a line
       starting with --shell.

       The groffer program provides its own parser for command line arguments
       that is compatible to both POSIX getopts(1) and GNU getopt(1).  It can
       handle option arguments and file names containing white space and a large
       set of special characters.  The following standard types of options are
       supported.

       • The option consisiting of a single minus - refers to standard input.

       • A single minus followed by characters refers to a single character
         option or a combination thereof; for example, the groffer short option
         combination -Qmfoo is equivalent to -Q -m foo.

       • Long options are options with names longer than one character; they are
         always preceded by a double minus.  An option argument can either go to
         the next command line argument or be appended with an equal sign to the
         argument; for example, --long=arg is equivalent to --long arg .

       • An argument of -- ends option parsing; all further command line
         arguments are interpreted as filespec parameters, i.e. file names or
         constructs for searching man_pages).

       • All command line arguments that are neither options nor option
         arguments are interpreted as filespec parameters and stored until
         option parsing has finished.  For example, the command line

         ].groffer:Shell_cmd.prompt_text " "groffer file1 -a -o arg file2" is
         equivalent to

         ].groffer:Shell_cmd.prompt_text " "groffer -a -o arg -- file1 file2"

       The free mixing of options and filespec parameters follows the GNU
       principle.  That does not fulfill the strange option behavior of POSIX
       that ends option processing as soon as the first non-option argument has
       been reached.  The end of option processing can be forced by the option
       `--' anyway.

BUGS
       Report bugs to the Include a complete, self-contained example that will
       allow the bug to be reproduced, and say which version of groffer you are
       using.

       You can also use the but you must first subscribe to this list.  You can
       do that by visiting the

       See groff(1) for information on availability.

SEE ALSO
       groff(1), troff(1)
              Details on the options and environment variables available in
              groff; all of them can be used with groffer.

       groff(7)
              Documentation of the groff language.

       grog(1)
              Internally, groffer tries to guess the groff command line options
              from the input using this program.

       groff_out(5)
              Documentation on the groff intermediate output (ditroff output).

       groff_tmac(5)
              Documentation on the groff macro files.

       man(1) The standard program to display man_pages.  The information there
              is only useful if it is the man_page for GNU man.  Then it
              documents the options and environment variables that are supported
              by groffer.

       ash(1), bash(1), dash(1), ksh(1), pdksh(1), posh(1), sh(1), zsh(1)
              Bourne shells that were tested with groffer.

       gxditview(1), xditview(1x)
              Viewers for groffer's x_mode.

       kghostview(1), ggv(1), gv(1), ghostview(1), gs(1)
              Viewers for groffer's ps_mode.

       kghostview(1), ggv(1), xpdf(1), acroread(1), kpdf(1)
              Viewers for groffer's pdf_mode.

       kdvi(1), xdvi(1), dvilx(1)
              Viewers for groffer's dvi_mode.

       konqueror(1), mozilla(1), lynx(1)
              Web-browsers for groffer's html or www_mode.

       less(1)
              Standard pager program for the tty_mode .

       gzip(1), bzip2(1)
              The decompression programs supported by groffer.

AUTHOR
       This file was written by

COPYING
       Copyright (C) 2001,2002,2004,2005 Free Software Foundation, Inc.

       This file is part of groffer, which is part of groff, a free software
       project.  You can redistribute it and/or modify it under the terms of the
       GNU General Public License as published by the Free Software Foundation,
       either version 2, or (at your option) any later version.

       You should have received a copy of the GNU General Public License along
       with groff, see the files COPYING and LICENSE in the top directory of the
       groff source package.  Or read the man_page gpl(1).  You can also write
       to the Free Software Foundation, 51 Franklin St - Fifth Floor, Boston, MA
       02110-1301, USA.



Groff Version 1.19.2             22 August 2005                       GROFFER(1)