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
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
2002-10-11 08:52:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Generic Problems
|
|
|
|
|
================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
2002-10-11 08:52:17 +00:00
|
|
|
|
* groff can't handle my troff document. It works fine with AT&T
|
|
|
|
|
troff.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2003-05-01 13:09:50 +00:00
|
|
|
|
Read the section on incompatibilities in groff_diff(7). Try using
|
|
|
|
|
the -C option. Alternatively there's the sed script
|
|
|
|
|
`tmac/fixmacros.sed' which will attempt to edit a file of macros so
|
|
|
|
|
that it can be used with groff without the -C flag.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
2002-10-11 08:52:17 +00:00
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
* Groff doesn't use the font names I'm used to.
|
|
|
|
|
|
2003-05-01 13:09:50 +00:00
|
|
|
|
Use the `ftr' request. See groff_diff(7).
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
2002-10-11 08:52:17 +00:00
|
|
|
|
* pic output is not centered horizontally; pictures sometimes run off
|
|
|
|
|
the bottom of the page.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2002-10-11 08:52:17 +00:00
|
|
|
|
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
|
|
|
|
* 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
|
|
|
|
|
|
|
|
|
* 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
|
2003-05-01 13:09:50 +00:00
|
|
|
|
put modified macros from tmac/an-old.tmac into man.local. More
|
|
|
|
|
information is available in groff_man(7).
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
2002-10-11 08:52:17 +00:00
|
|
|
|
* Where can I get grap?
|
|
|
|
|
|
|
|
|
|
Ted Faber <faber@lunabase.org> has written a freely available grap:
|
|
|
|
|
|
|
|
|
|
http://www.lunabase.org/~faber/Vault/software/grap/
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* The \n(st and \n(sb registers don't seem to work. I thought \w set
|
|
|
|
|
them to the height and depth of its argument, but the registers
|
|
|
|
|
always seem to be 0.
|
|
|
|
|
|
|
|
|
|
\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
|
|
|
|
* 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 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
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
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;
|
|
|
|
|
|
2002-10-11 08:52:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Printing and Display Problems
|
|
|
|
|
=============================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* I'm having problems including PostScript illustrations (EPS) using
|
|
|
|
|
the PSPIC macro and/or \X'ps: import ...'.
|
|
|
|
|
|
|
|
|
|
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).
|
|
|
|
|
|
|
|
|
|
The most convenient program to get the bounding box of a document is
|
|
|
|
|
the `ps2epsi' script coming with GhostScript.
|
|
|
|
|
|
|
|
|
|
If you can't use this program, another 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.)
|
|
|
|
|
|
|
|
|
|
If an EPS file to be included via \X'ps: import' does not start with
|
|
|
|
|
%!PS-Adobe-...', gtroff will still include the file, but grops will
|
|
|
|
|
not add any fonts to the generated output file that are listed in the
|
|
|
|
|
EPS file, even though the files are listed in the `download' file and
|
|
|
|
|
are available in the devps directory.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
2003-05-01 13:09:50 +00:00
|
|
|
|
This is intentional. The PAGE option during configuration 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.
|
|
|
|
|
|
|
|
|
|
A convenient way to set paper dimensions is to use the -dpaper option
|
|
|
|
|
of groff, together with proper -P options for the postprocessor
|
|
|
|
|
(overriding the default). For example, use the following for PS
|
|
|
|
|
output on A4 paper in landscape orientation:
|
|
|
|
|
|
|
|
|
|
groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms > foo.ps
|
|
|
|
|
|
|
|
|
|
See groff_tmac(5) for more information.
|
2002-10-11 08:52:17 +00:00
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
2003-05-01 13:09:50 +00:00
|
|
|
|
* When I print the output of groff -Tps, the output is always shifted
|
|
|
|
|
up by about 0.7 inches; I'm using 8.5x11 inch paper.
|
2002-10-11 08:52:17 +00:00
|
|
|
|
|
2003-05-01 13:09:50 +00:00
|
|
|
|
Make sure that the paper size is `letter'. See groff_tmac(5).
|
2002-10-11 08:52:17 +00:00
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* 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 -X -Tps.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* 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'm using TranScript spooling software.
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* 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. Change the `broken' parameter in
|
|
|
|
|
/usr/local/lib/groff/font/devps/DESC to 2.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* With groff -TX75, -TX100 or -X, I can only view the first page.
|
|
|
|
|
|
|
|
|
|
The left mouse button brings up a menu that allows you to view other
|
|
|
|
|
pages.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
2002-10-11 08:52:17 +00:00
|
|
|
|
* When I print the output of groff -Tdvi, I just get a black dot in
|
|
|
|
|
upper left corner.
|
2000-12-05 18:49:44 +00:00
|
|
|
|
|
2002-10-11 08:52:17 +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
|
|
|
|
|
|
|
|
|
* 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
|
|
|
|
|
2003-05-01 13:09:50 +00:00
|
|
|
|
In fact groff generates only level 2 PostScript (or rather level 1
|
|
|
|
|
with some extensions; see grops(1) for more information how to disable
|
|
|
|
|
them). 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.
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2002-10-11 08:52:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Platform-Dependent Macro Problems
|
|
|
|
|
=================================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* I get lots of errors when I use groff with the AT&T -mm macros.
|
|
|
|
|
|
|
|
|
|
Use the groff -mm macros.
|
|
|
|
|
|
2000-12-05 18:49:44 +00:00
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
2002-10-11 08:52:17 +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?
|
1996-09-07 16:18:32 +00:00
|
|
|
|
|
2002-10-11 08:52:17 +00:00
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* I'm having problems formatting HP-UX 9.0 man pages with groff -man.
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* 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
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* 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
|
|
|
|
|
groff. Copy /usr/lib/tmac/tmac.an to
|
|
|
|
|
/usr/local/share/groff/site-tmac/an.tmac and apply the following patch
|
|
|
|
|
(from Frank Wortner):
|
|
|
|
|
|
|
|
|
|
*** /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
|
|
|
|
|
/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
|
|
|
|
* 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
|
2002-10-11 08:52:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Compilation Problems
|
|
|
|
|
====================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Compilation dies with
|
|
|
|
|
|
|
|
|
|
y.tab.c: In function `int yyparse()':
|
|
|
|
|
y.tab.c: `size_t' undeclared in namespace `std'
|
|
|
|
|
|
2003-05-01 13:09:50 +00:00
|
|
|
|
* bison reports conflicts (either on stderr or in the `pic.output'
|
|
|
|
|
file) while processing `pic.y', and the produced pic binary doesn't
|
|
|
|
|
work at all.
|
|
|
|
|
|
|
|
|
|
You need bison version 1.875b or greater. Alternatively, use yacc or
|
|
|
|
|
byacc.
|
2002-10-11 08:52:17 +00:00
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* There are many empty `Makefile.dep' files. Is this a bug?
|
|
|
|
|
|
|
|
|
|
No. Real dependency files are created with a `make depend' call.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* On HP-UX, the compiler complains about missing symbol `alloca'.
|
|
|
|
|
|
|
|
|
|
Say
|
|
|
|
|
|
|
|
|
|
export LDFLAGS=-lPW
|
|
|
|
|
|
|
|
|
|
before starting the configure script.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* The configure script fails on OS/390 (z/OS) Unix.
|
|
|
|
|
|
|
|
|
|
[This has been fixed in z/OS V1R3 (aka OS/390 R13).]
|
|
|
|
|
|
|
|
|
|
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 2029).
|
|
|
|
|
This will effectively bypass the test (static constructors and
|
|
|
|
|
destructors do actually work properly):
|
|
|
|
|
|
|
|
|
|
#if { (eval echo "$as_me:2029: \"$ac_link\"") >&5
|
|
|
|
|
# (eval $ac_link) 2>&5
|
|
|
|
|
# ac_status=$?
|
|
|
|
|
# echo "$as_me:2032: \$? = $ac_status" >&5
|
|
|
|
|
# (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
|
|
|
|
|
# { (eval echo "$as_me:2034: \"$ac_try\"") >&5
|
|
|
|
|
# (eval $ac_try) 2>&5
|
|
|
|
|
# ac_status=$?
|
|
|
|
|
# echo "$as_me:2037: \$? = $ac_status" >&5
|
|
|
|
|
# (exit $ac_status); }; }; then
|
|
|
|
|
# echo "$as_me:2039: result: yes" >&5
|
|
|
|
|
#echo "${ECHO_T}yes" >&6
|
|
|
|
|
#else
|
|
|
|
|
# echo "$as_me: program exited with status $ac_status" >&5
|
|
|
|
|
#echo "$as_me: failed program was:" >&5
|
|
|
|
|
#cat conftest.$ac_ext >&5
|
|
|
|
|
#echo "$as_me:2045: result: no" >&5
|
|
|
|
|
#echo "${ECHO_T}no" >&6;{ { echo "$as_me:2046: error: a working C++ compiler is required" >&5
|
|
|
|
|
#echo "$as_me: error: a working C++ compiler is required" >&2;}
|
|
|
|
|
# { (exit 1); exit 1; }; }
|
|
|
|
|
#fi
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* 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 *.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* On Ultrix, the make stops with the message
|
|
|
|
|
|
|
|
|
|
*** Error code 1
|
|
|
|
|
|
|
|
|
|
Stop.
|
|
|
|
|
|
|
|
|
|
for no apparent reason.
|
|
|
|
|
|
|
|
|
|
Use GNU make.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* 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().
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* I get errors when I try to compile groff with Sun C++ version 3 or
|
|
|
|
|
earlier.
|
|
|
|
|
|
|
|
|
|
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; 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 errors when I try to compile groff with Sun C++ version 5.0
|
|
|
|
|
or 5.1.
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
|
|
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.
|
2003-05-01 13:09:50 +00:00
|
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
* When compiling on MacOS X, groff compiles but does not run well.
|
|
|
|
|
|
|
|
|
|
Use ./configure CXX=g++2 then make as usual.
|