# grog(1) - man - phpMan

[GROG(1)](https://www.chedong.com/phpMan.php/man/GROG/1/markdown)                                General Commands Manual                               [GROG(1)](https://www.chedong.com/phpMan.php/man/GROG/1/markdown)



## NAME
       grog - guess options for a following groff command

## SYNOPSIS
       **grog** [**-C**] [**-T** _device_] [**--run**] [**--warnings**] [**--ligatures**] [_groff-option_ ...] [**--**] [_filespec_
            ...]

### grog -h
### grog --help

### grog -v
### grog --version

## DESCRIPTION
       **grog** reads the input (file names or standard input) and guesses which of the [**groff**(1)](https://www.chedong.com/phpMan.php/man/groff/1/markdown) options
       are  needed  to  perform  the  input with the **groff** program.  A suitable device is now always
       written as **-T**_device_ including the groff default as **-T** **ps**.

       The corresponding **groff** command is usually displayed in standard  output.   With  the  option
       **--run**,  the  generated  line is output into standard error and the generated **groff** command is
       run on the _standard_ _output_.  [**groffer**(1)](https://www.chedong.com/phpMan.php/man/groffer/1/markdown) relies on a perfectly running [**groff**(1)](https://www.chedong.com/phpMan.php/man/groff/1/markdown).

## OPTIONS
       The option **-v** or **--version** prints information on the  version  number.   Also  **-h**  or  **--help**
       prints  usage  information.  Both of these options automatically end the **grog** program.  Other
       options are thenignored, and no **groff** command line is generated.  The following 3 options are
       the only **grog** options,

### -C
              the generated **groff** command line.

### --ligatures
              this option forces to include the arguments **-P-y** **-PU** within the generated  **groff**  com‐
              mand line.

       **--run**  with  this  option,  the  command line is output at standard error and then run on the
              computer.

### --warnings
              with this option, some more warnings are output to standard error.

       All other specified short options (words starting with one minus character **-**) are interpreted
       as  **groff**  options  or option clusters with or without argument.  No space is allowed between
       options and their argument.  Except from the **-m**_arg_ options, all options will  be  passed  on,
       i.e.  they are included unchanged in the command for the output without effecting the work of
       **grog**.

       A _filespec_ argument can either be the name of an existing file or a single minus  **-**  to  mean
       standard input.  If no _filespec_ is specified standard input is read automatically.

## DETAILS
       **grog**  reads  all  _filespec_  parameters  as a whole.  It tries to guess which of the following
       **groff** options are required for running the input under **groff**: **-e**, **-g**, **-G**, **-j**, **-p**, **-R**, **-s**,  **-t**
       (preprocessors); and **-man**, **-mdoc**, **-mdoc-old**, **-me**, **-mm**, **-mom**, and **-ms** (macro packages).

       The guessed **groff** command including those options and the found _filespec_ parameters is put on
       the standard output.

       It is possible to specify arbitrary **groff** options on the command line.  These are  passed  on
       the output without change, except for the **-m**_arg_ options.

       The  **groff**  program  has  trouble when the wrong **-m**_arg_ option or several of these options are
       specified.  In these cases, **grog** will print an error message and exit with an error code.  It
       is  better  to  specify  no **-m**_arg_ option.  Because such an option is only accepted and passed
       when **grog** does not find any of these options or the same option is found.

       If several different **-m**_arg_ options are found by **grog** an error message  is  produced  and  the
       program  is  terminated with an error code.  But the output is written with the wrong options
       nevertheless.

       Remember that it is not necessary to determine a macro package.  A  _roff_  file  can  also  be
       written in the _groff_ language without any macro package.  **grog** will produce an output without
       an **-m**_arg_ option.

       As **groff** also works with pure text files without any _roff_ requests, **grog** cannot  be  used  to
       identify a file to be a _roff_ file.

       The [**groffer**(1)](https://www.chedong.com/phpMan.php/man/groffer/1/markdown) program heavily depends on a working **grog**.

## EXAMPLES
       Calling
              grog meintro.me
       results in
              groff -me meintro.me
       So **grog** recognized that the file **meintro.me** is written with the **-me** macro package.
       On the other hand,
              grog pic.ms
       outputs
              groff -p -t -e -ms pic.ms
       Besides  determining the macro package **-ms**, **grog** recognized that the file **pic.ms** additionally
       needs **-pte**, the combination of **-p** for _pic_, **-t** for _tbl_, and **-e** for _eqn_.
       If both of the former example files are combined by the command
              grog meintro.me pic.ms
       an error message is sent to standard error because **groff** cannot work with two different macro
       packages:
              grog: error: there are several macro packages: -me -ms
       Additionally the corresponding output with the wrong options is printed to standard output:
              groff -pte -me -ms meintro.me pic.ms
       But the program is terminated with an error code.  The call of
              grog -ksS -Tdvi grnexmpl.g
       contains  several  **groff**  options that are just passed on the output without any interface to
       **grog**.  These are the option cluster **-ksS** consisting of **-k**, **-s**, and **-S**; and the option **-T** with
       argument **dvi**.  The output is
              groff -k -s -S -Tdvi grnexmpl.g
       so  no  additional  option was added by **grog**.  As no option **-m**_arg_ was found by **grog** this file
       does not use a macro package.

## AUTHORS
       **grog** was originally written by James Clark.  The current Perl implementation was  written  by
       Bernd  Warken  ⟨<groff-bernd.warken-72@web.de>⟩  with contributions from Ralph Corderoy, and is
       maintained by Werner Lemberg ⟨<wl@gnu.org>⟩.

## SEE ALSO
       [**groff**(1)](https://www.chedong.com/phpMan.php/man/groff/1/markdown), [**groffer**(1)](https://www.chedong.com/phpMan.php/man/groffer/1/markdown)



groff 1.22.4                                23 March 2022                                    [GROG(1)](https://www.chedong.com/phpMan.php/man/GROG/1/markdown)
