1996-09-07 16:18:32 +00:00
|
|
|
|
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.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* My document says that the current year is 19100, not 2000.
|
|
|
|
|
|
|
|
|
|
In groff, as in traditional troff, the yr number register yields the
|
|
|
|
|
year minus 1900. Unfortunately, there is a longstanding bug in the
|
|
|
|
|
Troff User's Manual <http://cm.bell-labs.com/cm/cs/cstr/54.ps.gz>,
|
|
|
|
|
which incorrectly claims that yr is the last two digits of the year.
|
|
|
|
|
This claim was never true of either Unix troff or of groff.
|
|
|
|
|
|
|
|
|
|
If your text looks like this:
|
|
|
|
|
|
|
|
|
|
.\" Wrong:
|
|
|
|
|
This document was formatted in 19\n(yr.
|
|
|
|
|
|
|
|
|
|
you can correct it as follows:
|
|
|
|
|
|
|
|
|
|
This document was formatted in \n[year].
|
|
|
|
|
|
|
|
|
|
or, if you want to be portable to older troff versions, as follows:
|
|
|
|
|
|
|
|
|
|
.nr y4 1900+\n(yr
|
|
|
|
|
This document was formatted in \n(y4.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* I get lots of `numeric overflow' error messages whenever I run
|
2000-12-05 18:49:44 +00:00
|
|
|
|
groff; I compiled groff with AT&T C++ 2.0 with an ANSI C compiler.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
Make sure -DCFRONT_ANSI_BUG is included in DEFINES in the top-level
|
|
|
|
|
Makefile. If that doesn't solve the problem, define INT_MIN as
|
|
|
|
|
-INT_MAX in libgroff/lib.h.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* I get errors when I try to compile groff with Sun C++ version 5.0
|
|
|
|
|
or 5.1.
|
2000-01-12 09:51:43 +00:00
|
|
|
|
|
|
|
|
|
This is a known problem; see Sun bug #4301919. As of this writing, no
|
|
|
|
|
patch is available. Use GCC 2.95.2 or later instead.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* I get errors when I try to compile groff with Sun C++ version 3 or
|
2000-12-05 18:49:44 +00:00
|
|
|
|
earlier.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
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
|
2000-12-05 18:49:44 +00:00
|
|
|
|
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; in <sys/signal.h> the
|
|
|
|
|
return type and the second argument type of signal() should be changed
|
|
|
|
|
to be `void (*)(int)'.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
You can either change them in place, or copy them to some other
|
|
|
|
|
directory and include that directory with a -I option.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* The configure script fails on OS/390 Unix.
|
|
|
|
|
|
|
|
|
|
There is a bug in the Language Environment (LE) whereby the test
|
|
|
|
|
program for static destructors fails. You will see the message
|
|
|
|
|
'configure: error: a working C++ compiler is required'
|
|
|
|
|
|
|
|
|
|
Applying PTF UQ42006 is supposed to fix this, but the test program is
|
|
|
|
|
still returning the wrong value (1). To work around this problem, you
|
|
|
|
|
can comment out the following in the configure script (near line 956).
|
|
|
|
|
This will effectively bypass the test (static constructors and
|
|
|
|
|
destructors do actually work properly):
|
|
|
|
|
|
|
|
|
|
#if { (eval echo configure:957: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
|
|
|
|
#then
|
|
|
|
|
echo "$ac_t""yes" 1>&6
|
|
|
|
|
#else
|
|
|
|
|
# echo "configure: failed program was:" >&5
|
|
|
|
|
# cat conftest.$ac_ext >&5
|
|
|
|
|
# rm -fr conftest*
|
|
|
|
|
# echo "$ac_t""no" 1>&6;{ echo "configure: error: a working C++ compiler is required" 1>&2; exit 1; }
|
|
|
|
|
#fi
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* I get errors when I try to compile groff with DEC C++.
|
|
|
|
|
|
|
|
|
|
Fix the declaration of write() in <unistd.h> so that the second
|
|
|
|
|
argument is a const char *. Fix the declaration of open() in
|
|
|
|
|
<sys/file.h> so that the first argument is a const char *.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* On a host using Unix make (e.g. Solaris), if you are compiling for
|
|
|
|
|
multiple architectures by building in a subdirectory, the make stops
|
|
|
|
|
with a message like this:
|
|
|
|
|
|
|
|
|
|
make: Fatal error: Don't know how to make target `assert.o'
|
|
|
|
|
|
|
|
|
|
or like this:
|
|
|
|
|
|
|
|
|
|
make: Fatal error: Can't find /u/src/groff/src/include/Makefile.sub': No such file or directory
|
|
|
|
|
|
|
|
|
|
This occurs because GNU make and Unix make handle VPATH differently,
|
|
|
|
|
and the groff build relies on GNU make's VPATH handling.
|
|
|
|
|
|
|
|
|
|
Use GNU make to work around the problem. In Solaris 8, GNU make is
|
|
|
|
|
on the Software Companion CD and is installed as /opt/sfw/bin/gmake.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* On Ultrix, the make stops with the message
|
|
|
|
|
|
2001-04-17 12:12:05 +00:00
|
|
|
|
*** Error code 1
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2001-04-17 12:12:05 +00:00
|
|
|
|
Stop.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2001-04-17 12:12:05 +00:00
|
|
|
|
for no apparent reason.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
Use GNU make.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* I'm having problems compiling groff on 386BSD 0.1.
|
|
|
|
|
|
|
|
|
|
If you're using ash as /bin/sh, you'll need the following patch.
|
|
|
|
|
|
|
|
|
|
*** gendef.sh.org Sun Jun 30 13:30:36 1991
|
|
|
|
|
--- gendef.sh Sun Feb 28 10:23:49 1993
|
|
|
|
|
***************
|
|
|
|
|
*** 3,9 ****
|
|
|
|
|
file=$1
|
|
|
|
|
shift
|
|
|
|
|
|
|
|
|
|
! defs="#define $1"
|
|
|
|
|
shift
|
|
|
|
|
for def
|
|
|
|
|
do
|
|
|
|
|
--- 3,10 ----
|
|
|
|
|
file=$1
|
|
|
|
|
shift
|
|
|
|
|
|
|
|
|
|
! x=$1
|
|
|
|
|
! defs="#define $x"
|
|
|
|
|
shift
|
|
|
|
|
for def
|
|
|
|
|
do
|
|
|
|
|
|
|
|
|
|
You'll also need to change dirnamemax.c so that it doesn't use
|
|
|
|
|
pathconf().
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* While compiling on Xenix, ranlib libgroff.a fails.
|
|
|
|
|
|
|
|
|
|
The system ranlib can't handle externals longer than 40 characters.
|
|
|
|
|
Use the ranlib included in demon.co.uk:/pub/xenix/g++-1.40.3a.v1
|
|
|
|
|
instead.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* There are many empty `Makefile.dep' files. Is this a bug?
|
|
|
|
|
|
|
|
|
|
No. Real dependency files are created with a `make depend' call.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
2001-04-17 12:12:05 +00:00
|
|
|
|
* Groff can't handle my troff document. It works fine with AT&T troff.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
Read the section on incompatibilities in gtroff(1). Try using the -C
|
2001-04-17 12:12:05 +00:00
|
|
|
|
option. Alternatively there's the sed script `tmac/fixmacros.sed'
|
1996-09-07 16:18:32 +00:00
|
|
|
|
which will attempt to edit a file of macros so that it can be used
|
|
|
|
|
with groff without the -C flag.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* groff -Tdvi produces dvi files that use fonts at weird
|
|
|
|
|
magnifications.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
Yes, it does. You may need to compile fonts with Metafont at these
|
2000-12-05 18:49:44 +00:00
|
|
|
|
magnifications. The CompileFonts script in the devdvi/generate
|
2001-04-17 12:12:05 +00:00
|
|
|
|
directory may help you to do this. (It will take a *long* time on
|
|
|
|
|
slow computers.)
|
2000-12-05 18:49:44 +00:00
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
* pic output is not centered horizontally; pictures sometimes run off
|
2000-12-05 18:49:44 +00:00
|
|
|
|
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.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
* I'm having problems including PostScript illustrations using the
|
|
|
|
|
PSPIC macro.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
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.)
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* I've configured groff for A4 paper, but gtroff still seems to think
|
2001-04-17 12:12:05 +00:00
|
|
|
|
that the length of a page (as returned by `\n(.p') is 11 inches.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
2001-04-17 12:12:05 +00:00
|
|
|
|
* groff produces wrapper macros for `ms' and friends which call the
|
|
|
|
|
system's original macros. Then, to get groff's ms macro package I
|
|
|
|
|
have to use `-mgs' instead `-ms'. Can I avoid this?
|
|
|
|
|
|
|
|
|
|
Yes. Configure and compile groff as usual, but install it with
|
|
|
|
|
|
|
|
|
|
make install tmac_wrap=""
|
|
|
|
|
|
|
|
|
|
Then no wrapper files are produced, and `-ms' will use groff's `ms'
|
|
|
|
|
macros.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* Groff doesn't use the font names I'm used to.
|
|
|
|
|
|
2001-04-17 12:12:05 +00:00
|
|
|
|
Use the `ftr' request. See (g)troff(1).
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* 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
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
* gpic doesn't accept the syntax `chop N M' for chopping both ends of
|
|
|
|
|
a line.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
The correct syntax is `chop N chop M'.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* 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.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
* When I print the output groff -Tps, the output is always shifted up
|
2000-12-05 18:49:44 +00:00
|
|
|
|
by about 0.7 inches; I'm using 8.5x11 inch paper.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
Make sure that PAGE is defined to be `letter' in the top-level
|
|
|
|
|
Makefile.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* When I try to print the output of groff -Tps, I get no output at all
|
2000-12-05 18:49:44 +00:00
|
|
|
|
from the printer, and the log file shows the error
|
|
|
|
|
%%[ error: undefined; offendingcommand: BP ]%%
|
|
|
|
|
I'm using TranScript spooling software.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
This is a bug in the page reversal filter in early versions of
|
|
|
|
|
TranScript. Change the `broken' parameter in
|
|
|
|
|
/usr/local/lib/groff/font/devps/DESC to 7.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* When I preview groff -Tps output using the Sun OpenWindows 2.0
|
|
|
|
|
pageview program, all the pages are displayed on top of each other.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
This is a defect in pageview. Change the `broken' parameter in
|
|
|
|
|
/usr/local/lib/groff/font/devps/DESC to 2.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
2000-01-12 09:51:43 +00:00
|
|
|
|
* With groff -TX75, -TX100 or -X, I can only view the first page.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
The left mouse button brings up a menu that allows you to view other
|
|
|
|
|
pages.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* When I print the output of groff -Tdvi, I just get a black dot in
|
2000-12-05 18:49:44 +00:00
|
|
|
|
upper left corner.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
Some dvi drivers (notably early versions of xtex) do not correctly
|
|
|
|
|
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.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* I get lots of errors when I use groff with the AT&T -mm macros.
|
|
|
|
|
|
2001-04-17 12:12:05 +00:00
|
|
|
|
Use the groff -mm macros.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* gtroff doesn't understand lines like `.ce99' with no space between
|
2000-12-05 18:49:44 +00:00
|
|
|
|
the name of the request or macro and the arguments.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
gtroff requires a space between macro or request and its arguments
|
1996-09-07 16:18:32 +00:00
|
|
|
|
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.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* gtroff gives warnings about lines like
|
|
|
|
|
.ev \" a comment
|
2000-12-05 18:49:44 +00:00
|
|
|
|
(with a tab after the .ev).
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
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
|
2000-12-05 18:49:44 +00:00
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
.ps \" restore the previous point size
|
2000-12-05 18:49:44 +00:00
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
(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:
|
2000-12-05 18:49:44 +00:00
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
.ev\" \" a comment
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* 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
|
2001-04-17 12:12:05 +00:00
|
|
|
|
modify tmac/an-old.tmac to suit your personal taste. For example, if
|
1996-09-07 16:18:32 +00:00
|
|
|
|
you want the center of the page header to say
|
2000-12-05 18:49:44 +00:00
|
|
|
|
|
2000-01-12 09:51:43 +00:00
|
|
|
|
System Programmer's Manual
|
2000-12-05 18:49:44 +00:00
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
you will need to change the line
|
2000-12-05 18:49:44 +00:00
|
|
|
|
|
2000-01-12 09:51:43 +00:00
|
|
|
|
.el .ds an-extra3 \"System Programmer's Manual
|
2000-12-05 18:49:44 +00:00
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
to
|
2000-12-05 18:49:44 +00:00
|
|
|
|
|
2000-01-12 09:51:43 +00:00
|
|
|
|
.el .ds an-extra3 System Programmer's Manual
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* While formatting a manual page, groff complains about not being able
|
|
|
|
|
to break lines. The problem seems to be caused by a line like:
|
1996-09-07 16:18:32 +00:00
|
|
|
|
.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
|
2000-12-05 18:49:44 +00:00
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
\w'label'n+2n
|
2000-12-05 18:49:44 +00:00
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
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
|
2000-12-05 18:49:44 +00:00
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
\w'label'u+2n
|
2000-12-05 18:49:44 +00:00
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
The solution is to fix the manual page:
|
2000-12-05 18:49:44 +00:00
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
.TP \w'label'u+2
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* I'm having problems formatting Ultrix man pages with groff -man.
|
|
|
|
|
|
|
|
|
|
The Ultrix man pages use a number of non-standard extensions to the
|
|
|
|
|
Unix man macros. One solution is to use the Ultrix -man macros with
|
2001-04-17 12:12:05 +00:00
|
|
|
|
groff. Copy /usr/lib/tmac/tmac.an to
|
|
|
|
|
/usr/local/share/groff/site-tmac/an.tmac and apply the following patch
|
|
|
|
|
(from Frank Wortner):
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
*** /usr/local/lib/groff/tmac/tmac.an Wed Sep 9 12:29:28 1992
|
|
|
|
|
--- /usr/lib/tmac/tmac.an Fri Jul 24 19:58:19 1992
|
|
|
|
|
***************
|
|
|
|
|
*** 489,495 ****
|
|
|
|
|
. \" make special case of shift out of italic
|
|
|
|
|
.de }S
|
|
|
|
|
.ds ]F
|
|
|
|
|
! .if \\$12 .if !\\$5 .ds ]F \^
|
|
|
|
|
.ie !\\$4 .}S \\$2 \\$1 "\\$3\f\\$1\\$4\\*(]F" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
|
|
|
|
|
.el \\$3
|
|
|
|
|
.}f
|
|
|
|
|
--- 489,495 ----
|
|
|
|
|
. \" make special case of shift out of italic
|
|
|
|
|
.de }S
|
|
|
|
|
.ds ]F
|
|
|
|
|
! .if \\$12 .if !\\$5 .ds ]F\^
|
|
|
|
|
.ie !\\$4 .}S \\$2 \\$1 "\\$3\f\\$1\\$4\\*(]F" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
|
|
|
|
|
.el \\$3
|
|
|
|
|
.}f
|
|
|
|
|
|
|
|
|
|
Another possible solution is to install tmac/man.ultrix as
|
2001-04-17 12:12:05 +00:00
|
|
|
|
/usr/local/share/groff/site-tmac/man.local.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* I'm having problems formatting HP-UX 9.0 man pages with groff -man.
|
|
|
|
|
|
2001-04-17 12:12:05 +00:00
|
|
|
|
Copy HP's tmac.an into /usr/local/share/groff/site-tmac/an.tmac, and
|
|
|
|
|
either put `.cp 1' at the beginning or filter it (and any files it .so's)
|
|
|
|
|
through tmac/fixmacros.sed.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* On HP-UX, the compiler complains about missing symbol `alloca'.
|
|
|
|
|
|
|
|
|
|
Say
|
|
|
|
|
|
|
|
|
|
export LDFLAGS=-lPW
|
|
|
|
|
|
|
|
|
|
before starting the configure script.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* I'm having problems formatting man pages produced by the perl
|
2000-12-05 18:49:44 +00:00
|
|
|
|
wrapman script.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
Some versions of wrapman have a superfluous blank line before the .TH
|
|
|
|
|
line. This must be deleted. Then either use groff -C, or apply the
|
|
|
|
|
following patch:
|
|
|
|
|
|
|
|
|
|
*** wrapman.~2~ Sun Jan 19 12:10:24 1992
|
|
|
|
|
--- wrapman Tue Aug 10 02:06:41 1993
|
|
|
|
|
***************
|
|
|
|
|
*** 35,41 ****
|
|
|
|
|
$line1 .= <IN> if $line1 =~ /eval/;
|
|
|
|
|
$line1 .= <IN> if $line1 =~ /argv/;
|
|
|
|
|
$line2 = <IN>;
|
|
|
|
|
! next if $line2 eq "'di';\n";
|
|
|
|
|
|
|
|
|
|
# Pull the old switcheroo.
|
|
|
|
|
|
|
|
|
|
--- 35,41 ----
|
|
|
|
|
$line1 .= <IN> if $line1 =~ /eval/;
|
|
|
|
|
$line1 .= <IN> if $line1 =~ /argv/;
|
|
|
|
|
$line2 = <IN>;
|
|
|
|
|
! next if $line2 eq "'di ';\n" || $line2 eq "'di';\n";
|
|
|
|
|
|
|
|
|
|
# Pull the old switcheroo.
|
|
|
|
|
|
|
|
|
|
***************
|
|
|
|
|
*** 49,56 ****
|
|
|
|
|
|
|
|
|
|
print OUT $line1;
|
|
|
|
|
print OUT <<EOF;
|
|
|
|
|
! 'di';
|
|
|
|
|
! 'ig00';
|
|
|
|
|
#
|
|
|
|
|
# $header
|
|
|
|
|
#
|
|
|
|
|
--- 49,58 ----
|
|
|
|
|
|
|
|
|
|
print OUT $line1;
|
|
|
|
|
print OUT <<EOF;
|
|
|
|
|
! 'di ';
|
|
|
|
|
! 'ds 00 \\"';
|
|
|
|
|
! 'eo ';
|
|
|
|
|
! 'ig 00 ';
|
|
|
|
|
#
|
|
|
|
|
# $header
|
|
|
|
|
#
|
|
|
|
|
***************
|
|
|
|
|
*** 72,85 ****
|
|
|
|
|
|
|
|
|
|
# These next few lines are legal in both Perl and nroff.
|
|
|
|
|
|
|
|
|
|
! $null.00; # finish .ig
|
|
|
|
|
|
|
|
|
|
'di \\" finish diversion--previous line must be blank
|
|
|
|
|
.nr nl 0-1 \\" fake up transition to first page again
|
|
|
|
|
.nr % 0 \\" start at page 1
|
|
|
|
|
! '; __END__ ##### From here on it's a standard manual page #####
|
|
|
|
|
.TH $PROG 1 "$month $mday, 19$year"
|
|
|
|
|
- .AT 3
|
|
|
|
|
.SH NAME
|
|
|
|
|
$prog \\- whatever
|
|
|
|
|
.SH SYNOPSIS
|
|
|
|
|
--- 74,87 ----
|
|
|
|
|
|
|
|
|
|
# These next few lines are legal in both Perl and nroff.
|
|
|
|
|
|
|
|
|
|
! $null.00 ; # finish .ig
|
|
|
|
|
! 'ec \\';
|
|
|
|
|
|
|
|
|
|
'di \\" finish diversion--previous line must be blank
|
|
|
|
|
.nr nl 0-1 \\" fake up transition to first page again
|
|
|
|
|
.nr % 0 \\" start at page 1
|
|
|
|
|
! .\\"'; __END__ ##### From here on it's a standard manual page #####
|
|
|
|
|
.TH $PROG 1 "$month $mday, 19$year"
|
|
|
|
|
.SH NAME
|
|
|
|
|
$prog \\- whatever
|
|
|
|
|
.SH SYNOPSIS
|
|
|
|
|
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* 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.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
Use groff -X -Tps.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* When I try to run gxditview, I get the error:
|
2000-12-05 18:49:44 +00:00
|
|
|
|
Error: Widget viewport has zero width and/or height
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* groff uses up an enormous amount of memory processing large files.
|
2000-12-05 18:49:44 +00:00
|
|
|
|
I'm using 386BSD 0.1.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
386BSD includes an old version of g++, 1.39, which has a bug that
|
|
|
|
|
causes a major memory leak in gtroff. Apply the following fix to g++
|
|
|
|
|
and recompile groff:
|
|
|
|
|
|
|
|
|
|
*** cplus-decl.c.~1~ Mon Aug 6 05:28:59 1990
|
|
|
|
|
--- cplus-decl.c Wed Jun 5 08:55:04 1991
|
|
|
|
|
***************
|
|
|
|
|
*** 7951,7961 ****
|
|
|
|
|
|
|
|
|
|
/* At the end, call delete if that's what's requested. */
|
|
|
|
|
if (TREE_GETS_DELETE (current_class_type))
|
|
|
|
|
exprstmt = build_method_call (build1 (NOP_EXPR, TYPE_POINTER_TO (current_class_type), error_mark_node),
|
|
|
|
|
get_identifier (OPERATOR_DELETE_FORMAT),
|
|
|
|
|
! build_tree_list (NULL_TREE, integer_zero_node),
|
|
|
|
|
NULL_TREE, LOOKUP_NORMAL);
|
|
|
|
|
else if (TYPE_USES_VIRTUAL_BASECLASSES (current_class_type))
|
|
|
|
|
exprstmt = build_x_delete (ptr_type_node, current_class_decl, 0);
|
|
|
|
|
else
|
|
|
|
|
exprstmt = 0;
|
|
|
|
|
--- 7951,7961 ----
|
|
|
|
|
|
|
|
|
|
/* At the end, call delete if that's what's requested. */
|
|
|
|
|
if (TREE_GETS_DELETE (current_class_type))
|
|
|
|
|
exprstmt = build_method_call (build1 (NOP_EXPR, TYPE_POINTER_TO (current_class_type), error_mark_node),
|
|
|
|
|
get_identifier (OPERATOR_DELETE_FORMAT),
|
|
|
|
|
! build_tree_list (NULL_TREE, current_class_decl),
|
|
|
|
|
NULL_TREE, LOOKUP_NORMAL);
|
|
|
|
|
else if (TYPE_USES_VIRTUAL_BASECLASSES (current_class_type))
|
|
|
|
|
exprstmt = build_x_delete (ptr_type_node, current_class_decl, 0);
|
|
|
|
|
else
|
|
|
|
|
exprstmt = 0;
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* Where can I get grap?
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
Ted Faber <faber@lunabase.org> has written a freely available grap:
|
|
|
|
|
|
|
|
|
|
http://www.lunabase.org/~faber/Vault/software/grap/
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
* How can I use groff with an old LaserJet printer that doesn't work
|
2000-12-05 18:49:44 +00:00
|
|
|
|
with groff -Tlj4?
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
You have at least 3 options:
|
|
|
|
|
|
|
|
|
|
- use groff -Tps with GNU Ghostscript;
|
|
|
|
|
|
|
|
|
|
- use groff -Tdvi with a TeX .dvi to Laserjet driver;
|
|
|
|
|
|
|
|
|
|
- use groff with the LaserJet driver in Chris Lewis' psroff package
|
2000-12-05 18:49:44 +00:00
|
|
|
|
(available for ftp from:
|
|
|
|
|
ftp.uunet.ca:/distrib/chris_lewis/psroff3.0pl17).
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
* Groff seems to generate level 3 Postscript, but my printer is only a
|
2000-12-05 18:49:44 +00:00
|
|
|
|
level 1 or 2 PostScript printer.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
In fact groff generates only level 1 PostScript. The `%!PS-Adobe-3.0'
|
|
|
|
|
comment at the beginning of PostScript output generated by groff
|
|
|
|
|
indicates that the file conforms to version 3.0 of the Adobe Document
|
|
|
|
|
Structuring Conventions. The output generated by groff should be
|
|
|
|
|
printable on any PostScript printer. Problems with groff output's not
|
|
|
|
|
printing are most often caused by the spooling system.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* The \n(st and \n(sb registers don't seem to work. I thought \w set
|
2000-12-05 18:49:44 +00:00
|
|
|
|
them to the height and depth of its argument, but the registers
|
|
|
|
|
always seem to be 0.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
|
|
|
|
\n(st and \n(sb aren't supposed to give the height and depth of the
|
|
|
|
|
string rather they give the minimum and maximum vertical displacement
|
|
|
|
|
of the baseline. For example for \v'2u'\v'-3u', \n(st will be 1 and
|
|
|
|
|
\n(sb will be -2. The height and depth of the string is available in
|
|
|
|
|
the \n[rst] and \n[rsb] registers: these are groff extensions.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
1996-09-07 16:18:32 +00:00
|
|
|
|
* On an SGI system, how can I make the man command use groff?
|
|
|
|
|
|
|
|
|
|
From David Hinds <dhinds@allegro.stanford.edu> (some of these steps
|
|
|
|
|
are unnecessary if you install with the `g' Makefile variable defined
|
|
|
|
|
as empty):
|
|
|
|
|
|
|
|
|
|
Create a script called 'eqn':
|
|
|
|
|
|
|
|
|
|
> #!/bin/sh
|
|
|
|
|
> if [ ${1:-""} = /usr/pub/eqnchar ] ; then shift ; fi
|
|
|
|
|
> geqn $*
|
|
|
|
|
|
|
|
|
|
and a script called 'neqn':
|
|
|
|
|
|
|
|
|
|
> #!/bin/sh
|
|
|
|
|
> if [ ${1:-""} = /usr/pub/eqnchar ] ; then shift ; fi
|
|
|
|
|
> geqn -Tascii $*
|
|
|
|
|
|
|
|
|
|
and do:
|
|
|
|
|
|
|
|
|
|
> ln -s gnroff nroff
|
|
|
|
|
|
|
|
|
|
and edit the end of the gnroff script to be:
|
|
|
|
|
|
|
|
|
|
> rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'`
|
|
|
|
|
> exec groff -Wall -mtty-char $T $opts $rest
|
|
|
|
|
|
|
|
|
|
To get PostScript output from 'man -t', you also need to create a
|
|
|
|
|
'psroff' script similar to 'nroff'. Here are the context diffs:
|
|
|
|
|
|
|
|
|
|
*** /usr/local/bin/nroff Sat Feb 13 15:51:09 1993
|
|
|
|
|
--- /usr/local/bin/psroff Sat Feb 13 17:45:46 1993
|
|
|
|
|
***************
|
|
|
|
|
*** 1,8 ****
|
|
|
|
|
#!/bin/sh
|
|
|
|
|
! # Emulate nroff with groff.
|
|
|
|
|
|
|
|
|
|
prog="$0"
|
|
|
|
|
! T=-Tascii
|
|
|
|
|
opts=
|
|
|
|
|
|
|
|
|
|
for i
|
|
|
|
|
--- 1,8 ----
|
|
|
|
|
#!/bin/sh
|
|
|
|
|
! # Emulate psroff with groff.
|
|
|
|
|
|
|
|
|
|
prog="$0"
|
|
|
|
|
! T=-Tps
|
|
|
|
|
opts=
|
|
|
|
|
|
|
|
|
|
for i
|
|
|
|
|
***************
|
|
|
|
|
*** 25,30 ****
|
|
|
|
|
--- 25,33 ----
|
|
|
|
|
-Tascii|-Tlatin1)
|
|
|
|
|
T=$1
|
|
|
|
|
;;
|
|
|
|
|
+ -t)
|
|
|
|
|
+ # ignore -- default is send to stdout
|
|
|
|
|
+ ;;
|
|
|
|
|
-T*)
|
|
|
|
|
# ignore other devices
|
|
|
|
|
;;
|
|
|
|
|
***************
|
|
|
|
|
*** 49,53 ****
|
|
|
|
|
rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'`
|
|
|
|
|
|
|
|
|
|
# This shell script is intended for use with man, so warnings are
|
|
|
|
|
# probably not wanted. Also load nroff-style character definitions.
|
|
|
|
|
! exec groff -Wall -mtty-char $T $opts $rest
|
|
|
|
|
--- 52,56 ----
|
|
|
|
|
rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'`
|
|
|
|
|
|
|
|
|
|
# This shell script is intended for use with man, so warnings are
|
|
|
|
|
! # probably not wanted.
|
|
|
|
|
! exec groff -Wall $T $opts $rest
|