PROBLEMS revision 69626
118099SpstThis file describes various problems that have been encountered in
218099Spstcompiling, installing and running groff.  Suggestions for additions or
318099Spstother improvements to this file are welcome.
418099Spst
569626Sru----------------------------------------------------------------------
669626Sru
769626Sru* My document says that the current year is 19100, not 2000.
869626Sru
969626SruIn groff, as in traditional troff, the yr number register yields the
1069626Sruyear minus 1900.  Unfortunately, there is a longstanding bug in the
1169626SruTroff User's Manual <http://cm.bell-labs.com/cm/cs/cstr/54.ps.gz>,
1269626Sruwhich incorrectly claims that yr is the last two digits of the year.
1369626SruThis claim was never true of either Unix troff or of groff.
1469626Sru
1569626SruIf your text looks like this:
1669626Sru
1769626Sru	.\" Wrong:
1869626Sru	This document was formatted in 19\n(yr.
1969626Sru
2069626Sruyou can correct it as follows:
2169626Sru
2269626Sru	This document was formatted in \n[year].
2369626Sru
2469626Sruor, if you want to be portable to older troff versions, as follows:
2569626Sru
2669626Sru	.nr y4 1900+\n(yr
2769626Sru	This document was formatted in \n(y4.
2869626Sru
2969626Sru----------------------------------------------------------------------
3069626Sru
3118099Spst* I get lots of `numeric overflow' error messages whenever I run
3269626Sru  groff; I compiled groff with AT&T C++ 2.0 with an ANSI C compiler.
3318099Spst
3418099SpstMake sure -DCFRONT_ANSI_BUG is included in DEFINES in the top-level
3518099SpstMakefile.  If that doesn't solve the problem, define INT_MIN as
3618099Spst-INT_MAX in libgroff/lib.h.
3718099Spst
3869626Sru----------------------------------------------------------------------
3955839Sasmodai
4069626Sru* I get errors when I try to compile groff with Sun C++ version 5.0
4169626Sru  or 5.1.
4269626Sru
4355839SasmodaiThis is a known problem; see Sun bug #4301919.  As of this writing, no
4455839Sasmodaipatch is available.  Use GCC 2.95.2 or later instead.
4555839Sasmodai
4669626Sru----------------------------------------------------------------------
4769626Sru
4818099Spst* I get errors when I try to compile groff with Sun C++ version 3 or
4969626Sru  earlier.
5018099Spst
5118099SpstGroff requires header files that are moderately compatible with AT&T
5218099SpstC++ and ANSI C.  With some versions of Sun C++, the supplied header
5318099Spstfiles need some of the following changes to meet this requirement:
5418099Spst<string.h> must declare the mem* functions, (just add `#include
5518099Spst<memory.h>' to <string.h>); the first argument to fopen and freopen
5618099Spstshould be declared as `const char *'; the first argument to fread
5718099Spstshould be declared as `void *'; the first argument to fwrite should be
5869626Srudeclared as `const void *'; malloc should be declared to return
5969626Sru`void *'; in <alloca.h>, the declaration `extern "C" { void
6069626Sru*__builtin_alloca(int); }' should be added; in <sys/signal.h> the
6169626Srureturn type and the second argument type of signal() should be changed
6269626Sruto be `void (*)(int)'.
6318099Spst
6418099SpstYou can either change them in place, or copy them to some other
6518099Spstdirectory and include that directory with a -I option.
6618099Spst
6769626Sru----------------------------------------------------------------------
6869626Sru
6969626Sru* The configure script fails on OS/390 Unix.
7069626Sru
7169626SruThere is a bug in the Language Environment (LE) whereby the test
7269626Sruprogram for static destructors fails.  You will see the message
7369626Sru'configure: error: a working C++ compiler is required'
7469626Sru
7569626SruApplying PTF UQ42006 is supposed to fix this, but the test program is
7669626Srustill returning the wrong value (1).  To work around this problem, you
7769626Srucan comment out the following in the configure script (near line 956).
7869626SruThis will effectively bypass the test (static constructors and
7969626Srudestructors do actually work properly):
8069626Sru
8169626Sru#if { (eval echo configure:957: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
8269626Sru#then
8369626Sru  echo "$ac_t""yes" 1>&6
8469626Sru#else
8569626Sru#  echo "configure: failed program was:" >&5
8669626Sru#  cat conftest.$ac_ext >&5
8769626Sru#  rm -fr conftest*
8869626Sru#  echo "$ac_t""no" 1>&6;{ echo "configure: error: a working C++ compiler is required" 1>&2; exit 1; }
8969626Sru#fi
9069626Sru
9169626Sru----------------------------------------------------------------------
9269626Sru
9318099Spst* I get errors when I try to compile groff with DEC C++.
9418099Spst
9518099SpstFix the declaration of write() in <unistd.h> so that the second
9618099Spstargument is a const char *.  Fix the declaration of open() in
9718099Spst<sys/file.h> so that the first argument is a const char *.
9818099Spst
9969626Sru----------------------------------------------------------------------
10069626Sru
10169626Sru* On a host using Unix make (e.g. Solaris), if you are compiling for
10269626Sru  multiple architectures by building in a subdirectory, the make stops
10369626Sru  with a message like this:
10469626Sru
10569626Sru    make: Fatal error: Don't know how to make target `assert.o'
10669626Sru
10769626Sru  or like this:
10869626Sru
10969626Sru    make: Fatal error: Can't find /u/src/groff/src/include/Makefile.sub': No such file or directory
11069626Sru
11169626SruThis occurs because GNU make and Unix make handle VPATH differently,
11269626Sruand the groff build relies on GNU make's VPATH handling.
11369626Sru
11469626SruUse GNU make to work around the problem.  In Solaris 8, GNU make is
11569626Sruon the Software Companion CD and is installed as /opt/sfw/bin/gmake.
11669626Sru
11769626Sru----------------------------------------------------------------------
11869626Sru
11918099Spst* On Ultrix, the make stops with the message
12018099Spst
12118099Spst  *** Error code 1
12218099Spst
12318099Spst  Stop.
12418099Spst
12518099Spstfor no apparent reason.
12618099Spst
12718099SpstUse GNU make.
12818099Spst
12969626Sru----------------------------------------------------------------------
13069626Sru
13118099Spst* I'm having problems compiling groff on 386BSD 0.1.
13218099Spst
13318099SpstIf you're using ash as /bin/sh, you'll need the following patch.
13418099Spst
13518099Spst*** gendef.sh.org	Sun Jun 30 13:30:36 1991
13618099Spst--- gendef.sh	Sun Feb 28 10:23:49 1993
13718099Spst***************
13818099Spst*** 3,9 ****
13918099Spst  file=$1
14018099Spst  shift
14118099Spst  
14218099Spst! defs="#define $1"
14318099Spst  shift
14418099Spst  for def
14518099Spst  do
14618099Spst--- 3,10 ----
14718099Spst  file=$1
14818099Spst  shift
14918099Spst  
15018099Spst! x=$1
15118099Spst! defs="#define $x"
15218099Spst  shift
15318099Spst  for def
15418099Spst  do
15518099Spst
15618099SpstYou'll also need to change dirnamemax.c so that it doesn't use
15718099Spstpathconf().
15818099Spst
15969626Sru----------------------------------------------------------------------
16069626Sru
16118099Spst* While compiling on Xenix, ranlib libgroff.a fails.
16218099Spst
16318099SpstThe system ranlib can't handle externals longer than 40 characters.
16418099SpstUse the ranlib included in demon.co.uk:/pub/xenix/g++-1.40.3a.v1
16518099Spstinstead.
16618099Spst
16769626Sru----------------------------------------------------------------------
16869626Sru
16969626Sru* There are many empty `Makefile.dep' files.  Is this a bug?
17069626Sru
17169626SruNo.  Real dependency files are created with a `make depend' call.
17269626Sru
17369626Sru----------------------------------------------------------------------
17469626Sru
17518099Spst* Groff can't handle my troff document. It works fine with AT&T troff.
17618099Spst
17718099SpstRead the section on incompatibilities in gtroff(1).  Try using the -C
17818099Spstoption.  Alternatively there's the sed script in tmac/fixmacros.sed
17918099Spstwhich will attempt to edit a file of macros so that it can be used
18018099Spstwith groff without the -C flag.
18118099Spst
18269626Sru----------------------------------------------------------------------
18318099Spst
18469626Sru* groff -Tdvi produces dvi files that use fonts at weird
18569626Sru  magnifications.
18669626Sru
18718099SpstYes, it does.  You may need to compile fonts with Metafont at these
18869626Srumagnifications.  The CompileFonts script in the devdvi/generate
18969626Srudirectory may help you to do this.  (It will take a *long* time.)
19018099Spst
19169626Sru----------------------------------------------------------------------
19269626Sru
19318099Spst* pic output is not centered horizontally; pictures sometimes run off
19469626Sru  the bottom of the page.
19518099Spst
19669626SruThe macro package you are using is not supplying appropriate
19769626Srudefinitions of PS and PE.  Give groff a -mpic option.
19818099Spst
19969626Sru----------------------------------------------------------------------
20018099Spst
20169626Sru* I'm having problems including PostScript illustrations using the
20269626Sru  PSPIC macro.
20369626Sru
20418099SpstA PostScript document must meet three requirements in order to be
20518099Spstincluded with the PSPIC macro: it must comply with the Adobe Document
20618099SpstStructuring Conventions; it must contain a BoundingBox line; it must
20718099Spstbe ``well-behaved''.  The BoundingBox line should be of the form:
20818099Spst
20918099Spst  %%BoundingBox: llx lly urx ury
21018099Spst
21118099Spstwhere llx, lly, urx, ury are the coordinates of the lower left x,
21218099Spstlower left y, upper right x, upper right y of the bounding box of
21318099Spstmarks on the page expressed as integers in the default PostScript
21418099Spstcoordinate system (72 units per inch, origin at bottom left corner).
21518099SpstA useful tactic is to print out the illustration by itself (you may
21618099Spstneed to add a `showpage' at the end), and physically measure the
21718099Spstbounding box.  For more detail on these requirements, read the
21818099Spstspecification of Encapsulated PostScript format.  (This is available
21918099Spstfrom the Adobe file server; send a message with a body of `help' to
22018099Spstps-file-server@adobe.com.)
22118099Spst
22269626Sru----------------------------------------------------------------------
22369626Sru
22418099Spst* I've configured groff for A4 paper, but gtroff still seems to think
22569626Sru  that the length of a page (as returned by \n(.p) is 11 inches.
22618099Spst
22718099SpstThis is intentional.  The PAGE option is used only by grops.  For
22818099Spstcompatibility with ditroff, the default page length in gtroff is
22918099Spstalways 11 inches.  The page length can be changed with the `pl'
23018099Spstrequest.
23118099Spst
23269626Sru----------------------------------------------------------------------
23369626Sru
23418099Spst* Groff doesn't use the font names I'm used to.
23518099Spst
23618099SpstUse the `ftr' request.  See gtroff(1).
23718099Spst
23869626Sru----------------------------------------------------------------------
23969626Sru
24018099Spst* I get errors using the Unix -ms macros with groff -e -C.
24118099Spst
24218099SpstApply this change:
24318099Spst
24418099Spst*** /usr/lib/ms/ms.eqn	Tue Apr 25 02:14:28 1989
24518099Spst--- ms.eqn	Sun Nov 11 10:33:59 1990
24618099Spst***************
24718099Spst*** 22,29 ****
24818099Spst  ..
24918099Spst  .	\" EN - end of a displayed equation
25018099Spst  .de EN
25118099Spst! .if !\\*(10 .br
25218099Spst  .di
25318099Spst  .rm EZ
25418099Spst  .nr ZN \\n(dn
25518099Spst  .if \\n(ZN>0 .if \\n(YE=0 .LP
25618099Spst--- 22,30 ----
25718099Spst  ..
25818099Spst  .	\" EN - end of a displayed equation
25918099Spst  .de EN
26018099Spst! .if \\n(.k>0 .br
26118099Spst  .di
26218099Spst+ .ds 10 \\*(EZ\\
26318099Spst  .rm EZ
26418099Spst  .nr ZN \\n(dn
26518099Spst  .if \\n(ZN>0 .if \\n(YE=0 .LP
26618099Spst
26769626Sru----------------------------------------------------------------------
26818099Spst
26969626Sru* gpic doesn't accept the syntax `chop N M' for chopping both ends of
27069626Sru  a line.
27118099Spst
27218099SpstThe correct syntax is `chop N chop M'.
27318099Spst
27469626Sru----------------------------------------------------------------------
27518099Spst
27669626Sru* With gpic -t, when I print `line ->; box' using a dvi to ps program,
27769626Sru  the arrow head sticks through into the inside of the box.
27818099Spst
27969626SruThe dvi to ps program should be modified to set the line cap and line
28069626Srujoin parameters to 1 while printing tpic specials.
28169626Sru
28269626Sru----------------------------------------------------------------------
28369626Sru
28418099Spst* When I print the output groff -Tps, the output is always shifted up
28569626Sru  by about 0.7 inches; I'm using 8.5x11 inch paper.
28618099Spst
28718099SpstMake sure that PAGE is defined to be `letter' in the top-level
28818099SpstMakefile.
28918099Spst
29069626Sru----------------------------------------------------------------------
29169626Sru
29218099Spst* When I try to print the output of groff -Tps, I get no output at all
29369626Sru  from the printer, and the log file shows the error
29469626Sru  %%[ error: undefined; offendingcommand: BP ]%%
29569626Sru  I'm using TranScript spooling software.
29618099Spst
29718099SpstThis is a bug in the page reversal filter in early versions of
29818099SpstTranScript.  Change the `broken' parameter in
29918099Spst/usr/local/lib/groff/font/devps/DESC to 7.
30018099Spst
30169626Sru----------------------------------------------------------------------
30218099Spst
30369626Sru* When I preview groff -Tps output using the Sun OpenWindows 2.0
30469626Sru  pageview program, all the pages are displayed on top of each other.
30569626Sru
30618099SpstThis is a defect in pageview.  Change the `broken' parameter in
30718099Spst/usr/local/lib/groff/font/devps/DESC to 2.
30818099Spst
30969626Sru----------------------------------------------------------------------
31069626Sru
31155839Sasmodai* With groff -TX75, -TX100 or -X, I can only view the first page.
31218099Spst
31318099SpstThe left mouse button brings up a menu that allows you to view other
31418099Spstpages.
31518099Spst
31669626Sru----------------------------------------------------------------------
31769626Sru
31818099Spst* When I print the output of groff -Tdvi, I just get a black dot in
31969626Sru  upper left corner.
32018099Spst
32118099SpstSome dvi drivers (notably early versions of xtex) do not correctly
32218099Spsthandle dvi files that use a resolution different from that used by dvi
32318099Spstfiles produced by TeX.  Try getting a more up to date driver.
32418099Spst
32569626Sru----------------------------------------------------------------------
32669626Sru
32718099Spst* I get lots of errors when I use groff with the AT&T -mm macros.
32818099Spst
32918099SpstThe AT&T -mm macros need a few changes to work with groff; `make
33018099Spstinstall.dwbmm' will copy your -mm macros to groff's macro directory
33118099Spstand make the necessary changes.  You may need to edit the commands for
33218099Spstthe install.mm target in the Makefile.  Alternatively use the groff
33318099Spst-mm macros.
33418099Spst
33569626Sru----------------------------------------------------------------------
33669626Sru
33718099Spst* gtroff doesn't understand lines like `.ce99' with no space between
33869626Sru  the name of the request or macro and the arguments.
33918099Spst
34069626Srugtroff requires a space between macro or request and its arguments
34118099Spstbecause it allows the use of long names for macros and requests.  You
34218099Spstcan use the -C option or the `cp' request to put gtroff into a
34318099Spstcompatibility mode in which it is not possible to use long names for
34418099Spstmacros but in which no space is required between macros and their
34518099Spstarguments.  The use of compatibility mode is strongly discouraged.
34618099Spst
34769626Sru----------------------------------------------------------------------
34869626Sru
34918099Spst* gtroff gives warnings about lines like
35018099Spst  .ev	\" a comment
35169626Sru  (with a tab after the .ev).
35218099Spst
35318099SpstA tab character cannot be used as a substitute for a space character
35418099Spst(except in one case: between a control character at the beginning of a
35518099Spstline and the name of a macro or request).  For example, in Unix troff
35669626Sru
35718099Spst  .ps	\" restore the previous point size
35869626Sru
35918099Spst(with a tab after the .ps) will NOT restore the previous point-size;
36018099Spstinstead it will be silently ignored.  Since this is very likely to be
36118099Spstan error, gtroff can give a warning about it.  If you want to align
36218099Spstcomments, you can do it like this:
36369626Sru
36418099Spst  .ev\"				\" a comment
36518099Spst
36669626Sru----------------------------------------------------------------------
36769626Sru
36818099Spst* I don't like the page headers and footers produced by groff -man.
36918099Spst
37018099SpstThere seem to be many different styles of page header and footer
37118099Spstproduced by different versions of the -man macros.  You will need to
37218099Spstmodify macros/tmac.an to suit your personal taste.  For example, if
37318099Spstyou want the center of the page header to say
37469626Sru
37555839Sasmodai  System Programmer's Manual
37669626Sru
37718099Spstyou will need to change the line
37869626Sru
37955839Sasmodai  .el .ds an-extra3 \"System Programmer's Manual
38069626Sru
38118099Spstto
38269626Sru
38355839Sasmodai  .el .ds an-extra3 System Programmer's Manual
38418099Spst
38569626Sru----------------------------------------------------------------------
38669626Sru
38769626Sru* While formatting a manual page, groff complains about not being able
38869626Sru  to break lines.  The problem seems to be caused by a line like:
38918099Spst  .TP \w'label'+2
39018099Spst
39118099SpstThe -man documentation says that the default scale indicator for TP
39218099Spstmacro is `n'.  The groff -man macros implement this correctly, so that
39318099Spstthe argument will be evaluated as if it were
39469626Sru
39518099Spst  \w'label'n+2n
39669626Sru
39718099SpstThe Unix -man macros don't implement this correctly (probably because
39818099Spstit's hard to do in Unix troff); they just append `n' to the entire
39918099Spstargument, so that it will be evaluated as if it were
40069626Sru
40118099Spst  \w'label'u+2n
40269626Sru
40318099SpstThe solution is to fix the manual page:
40469626Sru
40518099Spst  .TP \w'label'u+2
40618099Spst
40769626Sru----------------------------------------------------------------------
40869626Sru
40918099Spst* I'm having problems formatting Ultrix man pages with groff -man.
41018099Spst
41118099SpstThe Ultrix man pages use a number of non-standard extensions to the
41218099SpstUnix man macros.  One solution is to use the Ultrix -man macros with
41318099Spstgroff.  Rename /usr/local/lib/groff/tmac/tmac.an to
41418099Spst/usr/local/lib/groff/tmac/tmac.an.gnu, copy /usr/lib/tmac/tmac.an to
41518099Spst/usr/local/lib/groff/tmac/tmac.an and apply the following patch (from
41618099SpstFrank Wortner):
41718099Spst
41818099Spst*** /usr/local/lib/groff/tmac/tmac.an     Wed Sep  9 12:29:28 1992
41918099Spst--- /usr/lib/tmac/tmac.an       Fri Jul 24 19:58:19 1992
42018099Spst***************
42118099Spst*** 489,495 ****
42218099Spst  .     \" make special case of shift out of italic
42318099Spst  .de }S
42418099Spst  .ds ]F
42518099Spst! .if \\$12 .if !\\$5 .ds ]F \^
42618099Spst  .ie !\\$4 .}S \\$2 \\$1 "\\$3\f\\$1\\$4\\*(]F" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
42718099Spst  .el \\$3
42818099Spst  .}f
42918099Spst--- 489,495 ----
43018099Spst  .     \" make special case of shift out of italic
43118099Spst  .de }S
43218099Spst  .ds ]F
43318099Spst! .if \\$12 .if !\\$5 .ds ]F\^
43418099Spst  .ie !\\$4 .}S \\$2 \\$1 "\\$3\f\\$1\\$4\\*(]F" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
43518099Spst  .el \\$3
43618099Spst  .}f
43718099Spst
43818099SpstAnother possible solution is to install tmac/man.ultrix as
43918099Spst/usr/local/lib/groff/tmac/man.local.
44018099Spst
44169626Sru----------------------------------------------------------------------
44269626Sru
44318099Spst* I'm having problems formatting HP-UX 9.0 man pages with groff -man.
44418099Spst
44518099SpstRename /usr/local/lib/groff/tmac/tmac.an to (for example)
44618099Spst/usr/local/lib/groff/tmac/tmac.gan, copy HP's tmac.an into
44718099Spst/usr/local/lib/groff/tmac/tmac.an, and either put `.cp 1' at the
44818099Spstbeginning or filter it (and any files it .so's) through
44918099Spsttmac/fixmacros.sed.
45018099Spst
45169626Sru----------------------------------------------------------------------
45269626Sru
45318099Spst* I'm having problems formatting man pages produced by the perl
45469626Sru  wrapman script.
45518099Spst
45618099SpstSome versions of wrapman have a superfluous blank line before the .TH
45718099Spstline.  This must be deleted.  Then either use groff -C, or apply the
45818099Spstfollowing patch:
45918099Spst
46018099Spst*** wrapman.~2~	Sun Jan 19 12:10:24 1992
46118099Spst--- wrapman	Tue Aug 10 02:06:41 1993
46218099Spst***************
46318099Spst*** 35,41 ****
46418099Spst      $line1 .= <IN> if $line1 =~ /eval/;
46518099Spst      $line1 .= <IN> if $line1 =~ /argv/;
46618099Spst      $line2 = <IN>;
46718099Spst!     next if $line2 eq "'di';\n";
46818099Spst  
46918099Spst      # Pull the old switcheroo.
47018099Spst  
47118099Spst--- 35,41 ----
47218099Spst      $line1 .= <IN> if $line1 =~ /eval/;
47318099Spst      $line1 .= <IN> if $line1 =~ /argv/;
47418099Spst      $line2 = <IN>;
47518099Spst!     next if $line2 eq "'di ';\n" || $line2 eq "'di';\n";
47618099Spst  
47718099Spst      # Pull the old switcheroo.
47818099Spst  
47918099Spst***************
48018099Spst*** 49,56 ****
48118099Spst  
48218099Spst      print OUT $line1;
48318099Spst      print OUT <<EOF;
48418099Spst! 'di';
48518099Spst! 'ig00';
48618099Spst  #
48718099Spst  # $header
48818099Spst  #
48918099Spst--- 49,58 ----
49018099Spst  
49118099Spst      print OUT $line1;
49218099Spst      print OUT <<EOF;
49318099Spst! 'di ';
49418099Spst! 'ds 00 \\"';
49518099Spst! 'eo ';
49618099Spst! 'ig 00 ';
49718099Spst  #
49818099Spst  # $header
49918099Spst  #
50018099Spst***************
50118099Spst*** 72,85 ****
50218099Spst  
50318099Spst      # These next few lines are legal in both Perl and nroff.
50418099Spst  
50518099Spst! $null.00;                       # finish .ig
50618099Spst   
50718099Spst  'di           \\" finish diversion--previous line must be blank
50818099Spst  .nr nl 0-1    \\" fake up transition to first page again
50918099Spst  .nr % 0         \\" start at page 1
51018099Spst! '; __END__ ##### From here on it's a standard manual page #####
51118099Spst  .TH $PROG 1 "$month $mday, 19$year"
51218099Spst- .AT 3
51318099Spst  .SH NAME
51418099Spst  $prog \\- whatever
51518099Spst  .SH SYNOPSIS
51618099Spst--- 74,87 ----
51718099Spst  
51818099Spst      # These next few lines are legal in both Perl and nroff.
51918099Spst  
52018099Spst! $null.00 ;                      # finish .ig
52118099Spst! 'ec \\';
52218099Spst   
52318099Spst  'di           \\" finish diversion--previous line must be blank
52418099Spst  .nr nl 0-1    \\" fake up transition to first page again
52518099Spst  .nr % 0         \\" start at page 1
52618099Spst! .\\"'; __END__ ##### From here on it's a standard manual page #####
52718099Spst  .TH $PROG 1 "$month $mday, 19$year"
52818099Spst  .SH NAME
52918099Spst  $prog \\- whatever
53018099Spst  .SH SYNOPSIS
53118099Spst
53218099Spst
53369626Sru----------------------------------------------------------------------
53418099Spst
53569626Sru* When I preview documents using -TX75 or -TX100, the layout is not
53669626Sru  the same as when I print the document with -Tps: the line and page
53769626Sru  breaks come in different places.
53869626Sru
53918099SpstUse groff -X -Tps.
54018099Spst
54169626Sru----------------------------------------------------------------------
54269626Sru
54318099Spst* When I try to run gxditview, I get the error:
54469626Sru  Error: Widget viewport has zero width and/or height
54518099Spst
54618099SpstThis error means you haven't correctly installed the application
54718099Spstdefaults file, GXditview.ad; ``make install'' does this for you
54818099Spstautomatically, so either you didn't do ``make install'', or you don't
54918099Spsthave imake configured correctly.
55018099Spst
55169626Sru----------------------------------------------------------------------
55269626Sru
55318099Spst* groff uses up an enormous amount of memory processing large files.
55469626Sru  I'm using 386BSD 0.1.
55518099Spst
55618099Spst386BSD includes an old version of g++, 1.39, which has a bug that
55718099Spstcauses a major memory leak in gtroff.  Apply the following fix to g++
55818099Spstand recompile groff:
55918099Spst
56018099Spst*** cplus-decl.c.~1~	Mon Aug  6 05:28:59 1990
56118099Spst--- cplus-decl.c	Wed Jun  5 08:55:04 1991
56218099Spst***************
56318099Spst*** 7951,7961 ****
56418099Spst  
56518099Spst        /* At the end, call delete if that's what's requested.  */
56618099Spst        if (TREE_GETS_DELETE (current_class_type))
56718099Spst  	exprstmt = build_method_call (build1 (NOP_EXPR, TYPE_POINTER_TO (current_class_type), error_mark_node),
56818099Spst  				      get_identifier (OPERATOR_DELETE_FORMAT),
56918099Spst! 				      build_tree_list (NULL_TREE, integer_zero_node),
57018099Spst  				      NULL_TREE, LOOKUP_NORMAL);
57118099Spst        else if (TYPE_USES_VIRTUAL_BASECLASSES (current_class_type))
57218099Spst  	exprstmt = build_x_delete (ptr_type_node, current_class_decl, 0);
57318099Spst        else
57418099Spst  	exprstmt = 0;
57518099Spst--- 7951,7961 ----
57618099Spst  
57718099Spst        /* At the end, call delete if that's what's requested.  */
57818099Spst        if (TREE_GETS_DELETE (current_class_type))
57918099Spst  	exprstmt = build_method_call (build1 (NOP_EXPR, TYPE_POINTER_TO (current_class_type), error_mark_node),
58018099Spst  				      get_identifier (OPERATOR_DELETE_FORMAT),
58118099Spst! 				      build_tree_list (NULL_TREE, current_class_decl),
58218099Spst  				      NULL_TREE, LOOKUP_NORMAL);
58318099Spst        else if (TYPE_USES_VIRTUAL_BASECLASSES (current_class_type))
58418099Spst  	exprstmt = build_x_delete (ptr_type_node, current_class_decl, 0);
58518099Spst        else
58618099Spst  	exprstmt = 0;
58718099Spst
58869626Sru----------------------------------------------------------------------
58969626Sru
59018099Spst* Where can I get grap?
59118099Spst
59269626SruTed Faber <faber@lunabase.org> has written a freely available grap:
59318099Spst
59469626Sru  http://www.lunabase.org/~faber/Vault/software/grap/
59569626Sru
59669626Sru----------------------------------------------------------------------
59769626Sru
59818099Spst* How can I use groff with an old LaserJet printer that doesn't work
59969626Sru  with groff -Tlj4?
60018099Spst
60118099SpstYou have at least 3 options:
60218099Spst
60318099Spst- use groff -Tps with GNU Ghostscript;
60418099Spst
60518099Spst- use groff -Tdvi with a TeX .dvi to Laserjet driver;
60618099Spst
60718099Spst- use groff with the LaserJet driver in Chris Lewis' psroff package
60869626Sru  (available for ftp from:
60969626Sru  ftp.uunet.ca:/distrib/chris_lewis/psroff3.0pl17).
61018099Spst
61169626Sru----------------------------------------------------------------------
61269626Sru
61318099Spst* Groff seems to generate level 3 Postscript, but my printer is only a
61469626Sru  level 1 or 2 PostScript printer.
61518099Spst
61618099SpstIn fact groff generates only level 1 PostScript.  The `%!PS-Adobe-3.0'
61718099Spstcomment at the beginning of PostScript output generated by groff
61818099Spstindicates that the file conforms to version 3.0 of the Adobe Document
61918099SpstStructuring Conventions.  The output generated by groff should be
62018099Spstprintable on any PostScript printer.  Problems with groff output's not
62118099Spstprinting are most often caused by the spooling system.
62218099Spst
62369626Sru----------------------------------------------------------------------
62469626Sru
62518099Spst* The \n(st and \n(sb registers don't seem to work.  I thought \w set
62669626Sru  them to the height and depth of its argument, but the registers
62769626Sru  always seem to be 0.
62818099Spst
62918099Spst\n(st and \n(sb aren't supposed to give the height and depth of the
63018099Spststring rather they give the minimum and maximum vertical displacement
63118099Spstof the baseline.  For example for \v'2u'\v'-3u', \n(st will be 1 and
63218099Spst\n(sb will be -2.  The height and depth of the string is available in
63318099Spstthe \n[rst] and \n[rsb] registers: these are groff extensions.
63418099Spst
63569626Sru----------------------------------------------------------------------
63669626Sru
63718099Spst* On an SGI system, how can I make the man command use groff?
63818099Spst
63918099SpstFrom David Hinds <dhinds@allegro.stanford.edu> (some of these steps
64018099Spstare unnecessary if you install with the `g' Makefile variable defined
64118099Spstas empty):
64218099Spst
64318099SpstCreate a script called 'eqn':
64418099Spst
64518099Spst > #!/bin/sh
64618099Spst > if [ ${1:-""} = /usr/pub/eqnchar ] ; then shift ; fi
64718099Spst > geqn $*
64818099Spst
64918099Spstand a script called 'neqn':
65018099Spst
65118099Spst > #!/bin/sh
65218099Spst > if [ ${1:-""} = /usr/pub/eqnchar ] ; then shift ; fi
65318099Spst > geqn -Tascii $*
65418099Spst
65518099Spstand do:
65618099Spst
65718099Spst > ln -s gnroff nroff
65818099Spst
65918099Spstand edit the end of the gnroff script to be:
66018099Spst
66118099Spst > rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'`
66218099Spst > exec groff -Wall -mtty-char $T $opts $rest
66318099Spst
66418099SpstTo get PostScript output from 'man -t', you also need to create a
66518099Spst'psroff' script similar to 'nroff'.  Here are the context diffs:
66618099Spst
66718099Spst*** /usr/local/bin/nroff        Sat Feb 13 15:51:09 1993
66818099Spst--- /usr/local/bin/psroff       Sat Feb 13 17:45:46 1993
66918099Spst***************
67018099Spst*** 1,8 ****
67118099Spst  #!/bin/sh
67218099Spst! # Emulate nroff with groff.
67318099Spst
67418099Spst  prog="$0"
67518099Spst! T=-Tascii
67618099Spst  opts=
67718099Spst
67818099Spst  for i
67918099Spst--- 1,8 ----
68018099Spst  #!/bin/sh
68118099Spst! # Emulate psroff with groff.
68218099Spst
68318099Spst  prog="$0"
68418099Spst! T=-Tps
68518099Spst  opts=
68618099Spst
68718099Spst  for i
68818099Spst***************
68918099Spst*** 25,30 ****
69018099Spst--- 25,33 ----
69118099Spst        -Tascii|-Tlatin1)
69218099Spst                T=$1
69318099Spst                ;;
69418099Spst+       -t)
69518099Spst+               # ignore -- default is send to stdout
69618099Spst+               ;;
69718099Spst        -T*)
69818099Spst                # ignore other devices
69918099Spst                ;;
70018099Spst***************
70118099Spst*** 49,53 ****
70218099Spst  rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'`
70318099Spst
70418099Spst  # This shell script is intended for use with man, so warnings are
70518099Spst  # probably not wanted.  Also load nroff-style character definitions.
70618099Spst! exec groff -Wall -mtty-char $T $opts $rest
70718099Spst--- 52,56 ----
70818099Spst  rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'`
70918099Spst
71018099Spst  # This shell script is intended for use with man, so warnings are
71118099Spst! # probably not wanted.
71218099Spst! exec groff -Wall $T $opts $rest
713