This file describes various problems that have been encountered in
compiling, installing and running groff.  Suggestions for additions or
other improvements to this file are welcome.

* I am having problems compiling groff with g++ on a DECstation or
other machine using a MIPS processor (such as SGI machines).

Try getting g++ from foobar.colorado.edu:pub/Gnu-For-Pmax.

* I am having problems compiling groff with g++ on a 386 PC
running SVR3.2.

I recommend using Michael Bloom's GNU COFF patches
(tut.cis.ohio-state.edu:pub/gnu/coff/gnu-coff.tar.Z).

* I get lots of `numeric overflow' error messages whenever I run
groff; I compiled groff with AT&T C++ 2.0 with an ANSI C compiler.

Include -DCFRONT_ANSI_BUG in CPPDEFINES in the top-level Makefile.  If
that doesn't solve the problem, define INT_MIN as -INT_MAX in
lib/lib.h.

* Using SunOS 4.1 or 4.1.1, gtroff aborts in malloc.

Include -DSUNOS_LOCALTIME_BUG in MALLOCFLAGS in the top-level Makefile.

* When I try to compile groff with g++, I get lots of parse errors
from files in /usr/include.

You must install C++ versions of the standard include files; these are
included with libg++.

* g++ complains about conflicting declarations of fmod() while
compiling pic.tab.c; I'm using a 68k based machine.

This is a bug in the libg++ header files.  Apply the fix given in the
INSTALL file.

* I get errors when I try to compile groff with Sun C++.

Groff requires header files that are moderately compatible with AT&T
C++ and ANSI C.  With some versions of Sun C++, the supplied header
files need some of the following changes to meet this requirement:
<string.h> must declare the mem* functions, (just add `#include
<memory.h>' to <string.h>); the first argument to fopen and freopen
should be declared as `const char *'; the first argument to fread
should be declared as `void *'; the first argument to fwrite should be
declared as `const void *'; malloc should be declared to return `void
*'; in <alloca.h>, the declaration `extern "C" { void
*__builtin_alloca(int); }' should be added; declarations of getopt(),
optarg, optind and opterr should be added to <stdlib.h>; in
<sys/signal.h> the return type and the second argument type of
signal() should be changed to be `void (*)(int)'.

  You can either change
them in place, or copy them to some other directory and include that
directory with a -I option.

* I get the error `make[2]: execve: /bin/sh: Arg list too long.'.

If you're using GNU make, try using /bin/make instead.  Alternatively,
if you're using GNU make 3.59 or later, do something like:
  echo .NOEXPORT: >make.noexport
  MAKEFILES=`pwd`/make.noexport; export MAKEFILES

* pic output is not centered horizontally; pictures sometimes run off
the bottom of the page.

The macro package you are using is not supplying appropriate definitions
of PS and PE.  Give groff a -mpic option.

* I'm having problems including PostScript illustrations using the PSPIC
macro.

A PostScript document must meet three requirements in order to be
included with the PSPIC macro: it must comply with the Adobe Document
Structuring Conventions; it must contain a BoundingBox line; it must
be ``well-behaved''.  The BoundingBox line should be of the form:

  %%BoundingBox: llx lly urx ury

where llx, lly, urx, ury are the coordinates of the lower left x,
lower left y, upper right x, upper right y of the bounding box of
marks on the page expressed as integers in the default PostScript
coordinate system (72 units per inch, origin at bottom left corner).
A useful tactic is to print out the illustration by itself (you may
need to add a `showpage' at the end), and physically measure the
bounding box.  For more detail on these requirements, read the
specification of Encapsulated PostScript format.  (This is available
from the Adobe file server; send a message with a body of `help' to
ps-file-server@adobe.com.)

* I've configured groff for A4 paper, but gtroff still seems to think
that the length of a page (as returned by \n(.p) is 11 inches.

This is intentional.  The PAGE option is used only by grops.  For
compatibility with ditroff, the default page length in gtroff is
always 11 inches.  The page length can be changed with the `pl'
request.

* Groff doesn't use the font names I'm used to.

Use the `ftr' request.  See gtroff(1).

* I get errors using the Unix -ms macros with groff -e -C.

Apply this change:

*** /usr/lib/ms/ms.eqn	Tue Apr 25 02:14:28 1989
--- ms.eqn	Sun Nov 11 10:33:59 1990
***************
*** 22,29 ****
  ..
  .	\" EN - end of a displayed equation
  .de EN
! .if !\\*(10 .br
  .di
  .rm EZ
  .nr ZN \\n(dn
  .if \\n(ZN>0 .if \\n(YE=0 .LP
--- 22,30 ----
  ..
  .	\" EN - end of a displayed equation
  .de EN
! .if \\n(.k>0 .br
  .di
+ .ds 10 \\*(EZ\\
  .rm EZ
  .nr ZN \\n(dn
  .if \\n(ZN>0 .if \\n(YE=0 .LP


* gpic doesn't accept the syntax `chop N M' for chopping both ends of a
line.

The correct syntax is `chop N chop M'.

* With gpic -t, when I print `line ->; box' using a dvi to ps
program, the arrow head sticks through into the inside of the box.

The dvi to ps program should be modified to set the line cap and
line join parameters to 1 while printing tpic specials.

* When I print the output groff -Tps, the output is always shifted up
by about 0.7 inches; I'm using 8.5x11 inch paper.

Make sure that PAGE is defined to be `letter' in the top-level
Makefile.  If you failed to do this, you can fix the problem by doing:
  cp ps/devps/DESC-letter /usr/local/lib/groff/font/devps/DESC

* When I try to print the output of groff -Tps, I get no output at all
from the printer, and the log file shows the error
%%[ error: undefined; offendingcommand: BP ]%%
I using TranScript spooling software.

This is a bug in the page reversal filter in early versions of
TranScript.  Define BROKEN_SPOOLER_FLAGS=7 in the top-level Makefile,
and do a make.

* When I preview groff -Tps output using the Sun OpenWindows 2.0 pageview
program, all the pages are displayed on top of each other.

This is a defect in pageview.  Define BROKEN_SPOOLER_FLAGS=2 in the
top-level Makefile, and do a make.

* When I try to preview the output of groff -Tps using ralpage, I get
errors from ralpage.

This is a bug in ralpage.  You may be able to work around the bug by
defining MF and SF in ps/devps/prologue using `def' instead of `bind
def'.

* With groff -TX75 or -TX100, I can only view the first page.

The left mouse button brings up a menu that allows you to view other
pages.

* When I print the output of groff -Tdvi, I just get a black dot in
upper left corner.

Some dvi drivers (notably early versions of xtex) do not correct
handle dvi files that use a resolution different from that used by dvi
files produced by TeX.  Try getting a more up to date driver.

* I get lots of errors when I use groff with -mm.

-mm needs a few changes to work with groff; `make install.mm' will
copy your -mm macros to groff's macro directory and make the necessary
changes.  You may need to edit the commands for the install.mm target
in the Makefile.

* gtroff doesn't understand lines like `.ce99' with no space between
the name of the request or macro and the arguments.

Gtroff requires a space between macro or request and its arguments
because it allows the use of long names for macros and requests.  You
can use the -C option or the `cp' request to put gtroff into a
compatibility mode in which it is not possible to use long names for
macros but in which no space is required between macros and their
arguments.  The use of compatibility mode is strongly discouraged.

* gtroff gives warnings about lines like
  .ev	\" a comment
(with a tab after the .ev).

A tab character cannot be used as a substitute for a space character
(except in one case: between a control character at the beginning of a
line and the name of a macro or request).  For example, in Unix troff
  .ps	\" restore the previous point size
(with a tab after the .ps) will NOT restore the previous point-size;
instead it will be silently ignored.  Since this is very likely to be
an error, gtroff can give a warning about it.  If you want to align
comments, you can do it like this:
  .ev\"				\" a comment

* I don't like the page headers and footers produced by groff -man.

There seem to be many different styles of page header and footer
produced by different versions of the -man macros.  You will need to
modify macros/tmac.an to suit your personal taste.  For example, if
you want the center of the page header to say
  UNIX Programmer's Manual
you will need to change the line
  .el .ds an-extra3 \"UNIX Programmer's Manual
to
  .el .ds an-extra3 UNIX Programmer's Manual

* Where is the document ``Groff Character Names'' that is mentioned in various
man pages?

It is in doc/chars.tr.  You can print it out with each device to see
what characters are available for that device.

* While formatting a manual page, groff complains about not being able to
break lines.  The problem seems to be caused by a line like:
  .TP \w'label'+2

The -man documentation says that the default scale indicator for TP
macro is `n'.  The groff -man macros implement this correctly, so that
the argument will be evaluated as if it were
  \w'label'n+2n
The Unix -man macros don't implement this correctly (probably because
it's hard to do in Unix troff); they just append `n' to the entire
argument, so that it will be evaluated as if it were
  \w'label'u+2n
The solution is to fix the manual page:
  .TP \w'label'u+2

* When I preview documents using -TX75 or -TX100, the layout is not the same
as when I print the document with -Tps: the line and page breaks come
in different places.

Use groff -TXps.

* In gpic expressions don't work at all. I'm using g++ 1.39 on a sparc.

This is a bug in gcc/g++ 1.39.  Apply the fix given in the INSTALL file.

* When I try to run gxditview, I get the error:
Error: Widget viewport has zero width and/or height

This error means you haven't correctly installed the application
defaults file, GXditview.ad; ``make install'' does this for you
automatically, so either you didn't do ``make install'', or you don't
have imake configured correctly.
