home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
unix
/
volume24
/
psroff3.0
/
patch1
< prev
next >
Wrap
Text File
|
1991-10-09
|
29KB
|
1,040 lines
Subject: v24i115: psroff, troff to PostScript filter, Patch1
Newsgroups: comp.sources.unix
Approved: rsalz@uunet.UU.NET
Submitted-by: Chris Lewis <clewis@ferret.ocunix.on.ca>
Posting-number: Volume 24, Issue 115
Archive-name: psroff3.0/patch1
This is official patch 01 for Psroff 3.0.
Please apply it by:
cd <psroff source directory>
patch -N -p < <this file>
Fixes:
- My Post Office decided to go commercial only, so I had to
change my address to the new one. Grrrrr. Second change
in 6 months.
- Implemented -Gs (troff2ps.1.S, troff2.c, dit.c, DITROFF,
psrofflib.S) to handle groff sizescale stuff.
- Dumb mistake in declarations in psxlate.c (why didn't AIX 3.1
catch it?)
- Omitted array subscript in asc2ps.c
- Remark about eqn/"|" botch in TROUBLE and MISC.
Index: ./man/troff2ps.1.S
*** /tmp/PATCHold/./man/troff2ps.1.S Fri May 10 03:13:20 1991
--- ./man/troff2ps.1.S Fri May 10 03:13:23 1991
***************
*** 1,4 ****
! .\"Copyright 1988 by Chris Lewis 2.11 91/03/26
.TH TROFF2PS %%MANEXT%% "Psroff %%T2VERSION%%"
.SH NAME
troff2ps, troff2lj, troff2xx \- convert troff output to Postscript, HP etc.
--- 1,4 ----
! .\"Copyright 1988 by Chris Lewis 2.12 91/04/26
.TH TROFF2PS %%MANEXT%% "Psroff %%T2VERSION%%"
.SH NAME
troff2ps, troff2lj, troff2xx \- convert troff output to Postscript, HP etc.
***************
*** 18,23 ****
--- 18,24 ----
.B "[\-V]"
.B "[\-M]"
.B "[\-S]"
+ .BI "[\-G" ss "]"
.SH DESCRIPTION
.I Troff2ps
takes
***************
*** 172,184 ****
.B \-Z
is specified.
.PP
! The optimizer is quite good, but it is known that columns of text separated
! by a leader made up of periods can fool it.
! At the present time, it is unknown whether it's a width table or
! printer or troff wierdness.
.PP
The \-S option indicates that Postscript jobs should be terminated
with the directive "stop" instead of a control-D.
.SH "SPECIAL REQUESTS"
.BI troff2 xx
supports a number of additional features over and above bare
--- 173,186 ----
.B \-Z
is specified.
.PP
! The optimizer is quite good provided that the fonts scale uniformly.
.PP
The \-S option indicates that Postscript jobs should be terminated
with the directive "stop" instead of a control-D.
+ .PP
+ If you are using \f3groff\fP to drive troff2ps
+ use the \-Gss option to specify the sizescale value from the groff
+ DESC files.
.SH "SPECIAL REQUESTS"
.BI troff2 xx
supports a number of additional features over and above bare
Index: ./lib/psrofflib.S
*** /tmp/PATCHold/./lib/psrofflib.S Fri May 10 03:13:37 1991
--- ./lib/psrofflib.S Fri May 10 03:13:39 1991
***************
*** 1,4 ****
! # 2.17 91/04/05
# This file controls psroff, you can insert additional printer
# types here. These are eval'd *late* in processing, so that
# you can insert $copies etc.
--- 1,4 ----
! # 2.18 91/04/25
# This file controls psroff, you can insert additional printer
# types here. These are eval'd *late* in processing, so that
# you can insert $copies etc.
***************
*** 44,49 ****
--- 44,52 ----
# Some postscript printers differ in location.
# -N The troff is actually ditroff. (You have to
# have ditroff widths installed for this!)
+ # -G<sizescale> If you're driving with groff, and the sizescale
+ # parameter is specified in the DESC file, you
+ # have to supply the sizescale parameter here.
# -Z optimizer
# -S Use "stop" to terminate Postscript instead
# of control-D
Index: ./widths/dit2catwid.c
*** /tmp/PATCHold/./widths/dit2catwid.c Fri May 10 03:13:50 1991
--- ./widths/dit2catwid.c Fri May 10 03:13:51 1991
***************
*** 10,16 ****
#ifndef lint
static char SCCSID[] =
! "@(#)dit2catwid.c 2.7 Copyright 91/02/20 09:33:05 Chris Lewis";
#endif
#include <stdio.h>
--- 10,16 ----
#ifndef lint
static char SCCSID[] =
! "@(#)dit2catwid.c 2.8 Copyright 91/04/25 17:29:41 Chris Lewis";
#endif
#include <stdio.h>
***************
*** 73,79 ****
FILE *in1, *in2, *out;
char *fin1, *fin2, *fout;
! progname = argv[0];
while ((c = getopt(argc, argv, "evsr:u:chH:")) != EOF)
switch(c) {
--- 73,83 ----
FILE *in1, *in2, *out;
char *fin1, *fin2, *fout;
! progname = strrchr(argv[0], '/');
! if (progname)
! progname++;
! else
! progname = argv[0];
while ((c = getopt(argc, argv, "evsr:u:chH:")) != EOF)
switch(c) {
***************
*** 393,403 ****
exit(1);
}
while(fgets(buffer, sizeof(buffer), f)) {
! char str[3];
if (commentsok && buffer[0] == '#')
continue;
if (strlen(buffer) > 1 && buffer[0] == '#' && !isspace(buffer[1]))
continue;
commentsok = 0;
#ifdef DEBUG
printf("buffer: %s\n", buffer);
--- 397,411 ----
exit(1);
}
while(fgets(buffer, sizeof(buffer), f)) {
! char str[31];
if (commentsok && buffer[0] == '#')
continue;
if (strlen(buffer) > 1 && buffer[0] == '#' && !isspace(buffer[1]))
continue;
+
+ sv = strchr(buffer, '\n');
+ if (sv) *sv = '\0';
+
commentsok = 0;
#ifdef DEBUG
printf("buffer: %s\n", buffer);
***************
*** 405,414 ****
tok = gettoken(buffer, NULL);
if (!tok)
continue;
! if (strlen(tok) > 2) {
! fprintf(stderr, "%s: %s bad format on line %s\n",
! progname, filename, buffer);
! exit(1);
}
strcpy(str, tok);
tok = gettoken(buffer, 1);
--- 413,422 ----
tok = gettoken(buffer, NULL);
if (!tok)
continue;
! if (strlen(tok) > 30) {
! if (verbose)
! printf("%s: %s skipping entry %s\n",
! progname, filename, buffer);
}
strcpy(str, tok);
tok = gettoken(buffer, 1);
***************
*** 426,434 ****
--- 434,447 ----
widval = oldwidval;
eval = oldeval;
} else {
+ /* atoi will truncate tok if it contains non-numeric characters.
+ Which is just fine for groff's wid,a,b,c,... format */
widval = ((double) TROFFUWID * TROFFRESOLUTION * atoi(tok) /
(unitwid * res)) + .5;
widval = max(widval, 1);
+ if (widval > 63)
+ printf("%s: width value too big for %s (%d)\n",
+ progname, str, widval);
tok = gettoken(buffer, 1);
if (!tok) {
fprintf(stderr, "%s: %s bad format on line %s\n",
Index: ./widths/genext.S
*** /tmp/PATCHold/./widths/genext.S Fri May 10 03:14:04 1991
--- ./widths/genext.S Fri May 10 03:14:05 1991
***************
*** 5,11 ****
# See the LICENSE file for a full description of the restrictions
# under which this software is provided.
#
! # 2.6 91/03/10 Generate extension list of characters for troff2ps.
if [ $# != 1 ]
then
echo "usage: genext <ditroff font width directory>" >&2
--- 5,11 ----
# See the LICENSE file for a full description of the restrictions
# under which this software is provided.
#
! # 2.7 91/04/25 Generate extension list of characters for troff2ps.
if [ $# != 1 ]
then
echo "usage: genext <ditroff font width directory>" >&2
***************
*** 47,80 ****
catcodes[ch] = 1
next
}
$1 ~ /^name/ {
curfont = $2
next
}
! /faked/ { next }
! NF >= 4 && $2 ~ /^[0-9]*$/ && $3 ~ /^[0-9]*$/ {
! if (catcodes[$1] || $1 == "\\|" || $1 == "\\^")
next
if (seen[$1]) {
! if (seen[$1] != $4)
printf "Duplicate %s, but different codes! (%s/%s)\n", \
! $1, seen[$1], $4 > "/tmp/errors"
next
}
! seen[$1] = $4
if (curfont == "S")
flag = "S"
! else if (curfont == "S2")
flag = 4
else
flag = "N"
code = $4
if (length(code) > 3)
code = substr(code, length(code) - 2, 3)
while(length(code) < 3) {
code = "0" code
}
! printf("%s %s \\%s\n", $1, flag, code)
}
' ../utils/ljtab.c $files
--- 47,115 ----
catcodes[ch] = 1
next
}
+
$1 ~ /^name/ {
curfont = $2
next
}
!
! /charset/ {
! incharset = 1
! }
!
! NF == 2 && $2 == "\"" {
! if (catcodes[$1] || $1 == "\\|" || $1 == "\\^" || $1 == "---")
next
if (seen[$1]) {
! if (seen[$1] != code)
printf "Duplicate %s, but different codes! (%s/%s)\n", \
! $1, seen[$1], code > "/tmp/errors"
next
}
!
! seen[$1] = code
if (curfont == "S")
flag = "S"
! else if (curfont ~ /S[0-9]/)
flag = 4
else
flag = "N"
+
+ printf("%s %s %s\n", $1, flag, code);
+ }
+
+ /faked/ { next }
+ NF >= 4 && $2 ~ /^[0-9,]*$/ && $3 ~ /^[0-9]*$/ {
+ if (!incharset)
+ next
+ if (catcodes[$1] || $1 == "\\|" || $1 == "\\^" || $1 == "---")
+ next
+
code = $4
if (length(code) > 3)
code = substr(code, length(code) - 2, 3)
+
while(length(code) < 3) {
code = "0" code
}
!
! code = "\\" code
! if (seen[$1]) {
! if (seen[$1] != code)
! printf "Duplicate %s, but different codes! (%s/%s)\n", \
! $1, seen[$1], code > "/tmp/errors"
! next
! }
!
! seen[$1] = code
!
! if (curfont == "S")
! flag = "S"
! else if (curfont ~ /S[0-9]/)
! flag = 4
! else
! flag = "N"
! printf("%s %s %s\n", $1, flag, code)
}
' ../utils/ljtab.c $files
Index: ./widths/gfnttab.S
*** /tmp/PATCHold/./widths/gfnttab.S Fri May 10 03:14:14 1991
--- ./widths/gfnttab.S Fri May 10 03:14:16 1991
***************
*** 5,11 ****
# See the LICENSE file for a full description of the restrictions
# under which this software is provided.
#
! #@(#)gfnttab.sh 2.7 91/04/02
# Set this to something non-null in the Makefile if you need
# a.out.h/COFF headers on your width files, and the COFF/HEADERSIZE
# defines cause dit2catwid to generate width tables that
--- 5,11 ----
# See the LICENSE file for a full description of the restrictions
# under which this software is provided.
#
! #@(#)gfnttab.sh 2.8 91/04/25
# Set this to something non-null in the Makefile if you need
# a.out.h/COFF headers on your width files, and the COFF/HEADERSIZE
# defines cause dit2catwid to generate width tables that
***************
*** 45,52 ****
rm -f /tmp/S
if [ ! -r R ]
then
! echo "Creating Dummy R font width table"
! touch R
fi
if [ -r S ]
then
--- 45,59 ----
rm -f /tmp/S
if [ ! -r R ]
then
! if [ -r TR ]
! then
! R=TR
! else
! echo "Creating Dummy R font width table"
! touch R
! fi
! else
! R=R
fi
if [ -r S ]
then
***************
*** 72,77 ****
--- 79,91 ----
echo "WARNING: no 'res' command in DESC - assuming 300"
res="-r 300"
else
+ ss=`sed -n \
+ -e 's/^[ ]*sizescale[ ][ ]*\([0-9][0-9]*\).*/\1/p' $DESC`
+ if [ -n "$ss" ]
+ then
+ echo "INFO: Found sizescale of $ss (probably groff)"
+ res=`expr $res / $ss`
+ fi
res="-r $res"
fi
unit=`sed -n -e 's/^[ ]*unitwidth[ ][ ]*\([0-9][0-9]*\).*/\1/p' $DESC`
***************
*** 105,114 ****
esac
case $i in
S)
! args="-s R /tmp/S"
;;
SU)
! args="-s R $i"
;;
S[0-9] | SI | ST )
continue
--- 119,128 ----
esac
case $i in
S)
! args="-s $R /tmp/S"
;;
SU)
! args="-s $R $i"
;;
S[0-9] | SI | ST )
continue
Index: ./utils/psxlate.c
*** /tmp/PATCHold/./utils/psxlate.c Fri May 10 03:14:27 1991
--- ./utils/psxlate.c Fri May 10 03:14:30 1991
***************
*** 23,29 ****
*/
#ifndef lint
static char SCCSid[] =
! "@(#)psxlate.c: 2.11 Copyright 91/03/26 00:13:16 Chris Lewis";
#endif
#ifdef ALONE
--- 23,29 ----
*/
#ifndef lint
static char SCCSid[] =
! "@(#)psxlate.c: 2.13 Copyright 91/04/24 22:07:02 Chris Lewis";
#endif
#ifdef ALONE
***************
*** 33,41 ****
#include "defs.h"
#endif
! int xlate = 0;
! extern int italic = 0;
! int needd = 0;
#define BUFFERSIZE 512
int half = 0; /* Controls emitter, 0: whole file, 1: first half,
--- 33,41 ----
#include "defs.h"
#endif
! int xlate;
! int italic;
! int needd;
#define BUFFERSIZE 512
int half = 0; /* Controls emitter, 0: whole file, 1: first half,
***************
*** 220,225 ****
--- 220,226 ----
long offset;
int state = PROLOG;
int seen;
+ int nest = 0;
magicstr = malloc(strlen(buffer) + 1);
strcpy(magicstr, buffer);
***************
*** 232,244 ****
if (!buffer)
seen = S_EOF;
! else if (buffer[0] == '%') {
! if (strncmp(buffer, "%%Page:", 7) == 0)
seen = S_PAGE;
! else if (strncmp(buffer, "%%Trailer", 9) == 0)
seen = S_EPI;
! else
seen = S_NONE;
} else
seen = S_NONE;
switch(seen) {
--- 233,254 ----
if (!buffer)
seen = S_EOF;
! else if (buffer[0] == '%' && buffer[1] == '%') {
! if (!nest && strncmp(buffer, "%%Page:", 7) == 0)
seen = S_PAGE;
! else if (!nest && isspace(buffer[9]) &&
! strncmp(buffer, "%%Trailer", 9) == 0)
seen = S_EPI;
! else {
!
! if (strncmp(buffer, "%%BeginDocument:", 16) == 0)
! nest++;
! else if (isspace(buffer[13]) &&
! strncmp(buffer, "%%EndDocument", 13) == 0)
! nest--;
!
seen = S_NONE;
+ }
} else
seen = S_NONE;
switch(seen) {
***************
*** 295,300 ****
--- 305,314 ----
break;
}
}
+ if (nest) {
+ fprintf(stderr, "%s: misnested BeginDocument/EndDocument\n",
+ progname);
+ }
}
cleanup() {
***************
*** 501,507 ****
thru *count;
*/
#define CHUNK 512
! char *mygets(in, out, count)
FILE *in, *out; long *count; {
static char *buffer = NULL;
static long buflimit;
--- 515,522 ----
thru *count;
*/
#define CHUNK 512
! char *
! mygets(in, out, count)
FILE *in, *out; long *count; {
static char *buffer = NULL;
static long buflimit;
Index: ./utils/asc2ps.c
*** /tmp/PATCHold/./utils/asc2ps.c Fri May 10 03:14:43 1991
--- ./utils/asc2ps.c Fri May 10 03:14:45 1991
***************
*** 14,20 ****
#ifndef lint
static char SCCSid[] =
! "@(#)asc2ps.c: 2.3 Copyright 91/03/26 20:46:04 Chris Lewis";
#endif
#include "defs.h"
--- 14,20 ----
#ifndef lint
static char SCCSid[] =
! "@(#)asc2ps.c: 2.4 Copyright 91/04/10 19:48:00 Chris Lewis";
#endif
#include "defs.h"
***************
*** 369,375 ****
if (outbufs[NORMAL][linepos] == *buffer) {
outbufs[BOLD][linepos] = *buffer;
maxpos[BOLD] = max(maxpos[BOLD], linepos+1);
! } else if (*buffer == '_' && outbufs[NORMAL] != ' ' ||
outbufs[NORMAL][linepos] == '_') {
if (*buffer != '_')
--- 369,376 ----
if (outbufs[NORMAL][linepos] == *buffer) {
outbufs[BOLD][linepos] = *buffer;
maxpos[BOLD] = max(maxpos[BOLD], linepos+1);
! } else if (*buffer == '_' &&
! outbufs[NORMAL][linepos] != ' ' ||
outbufs[NORMAL][linepos] == '_') {
if (*buffer != '_')
Index: ./tests/testtab.m
*** /tmp/PATCHold/./tests/testtab.m Fri May 10 03:14:56 1991
--- ./tests/testtab.m Fri May 10 03:14:57 1991
***************
*** 1,4 ****
! .\" 2.3 91/03/25
.po .25i
.in 0
.fp 1 R
--- 1,4 ----
! .\" 2.5 91/05/03
.po .25i
.in 0
.fp 1 R
***************
*** 9,19 ****
.vs 14
.sp |.3i
.ce 4
! PSROFF TEST SHEET (2.3)
.br
! Please fill out and mail to: BOX 13215
.br
! Kanata PO, Kanata, Ontario, Canada K2K 1X4
.br
\*(2d \*(2v \*(pt
.ps 10
--- 9,19 ----
.vs 14
.sp |.3i
.ce 4
! PSROFF TEST SHEET (2.5)
.br
! Please fill out and mail to: Chris Lewis
.br
! P.O. Box 124, Dunrobin, Ontario, Canada K0A 1T0
.br
\*(2d \*(2v \*(pt
.ps 10
Index: ./dit.c
*** /tmp/PATCHold/./dit.c Fri May 10 03:15:11 1991
--- ./dit.c Fri May 10 03:15:13 1991
***************
*** 12,18 ****
#ifndef lint
static char SCCSid[] =
! "@(#)dit.c: 91/03/26 Copyright 91/03/26 00:13:12 Chris Lewis";
#endif
extern struct cattab tabN[], tabS[], *extidx;
--- 12,18 ----
#ifndef lint
static char SCCSid[] =
! "@(#)dit.c: 91/04/24 Copyright 91/04/24 21:48:46 Chris Lewis";
#endif
extern struct cattab tabN[], tabS[], *extidx;
***************
*** 132,137 ****
--- 132,139 ----
}
#ifdef DIT
+
+ int sizescale = 1;
int indtres;
int points, font, ch, i;
***************
*** 150,155 ****
--- 152,158 ----
goto finish;
case 's':
points = getnum();
+ points /= sizescale;
DBP((D_CAT, "Pointsize %d\n", points));
break;
case 'f':
Index: ./README
*** /tmp/PATCHold/./README Fri May 10 03:15:27 1991
--- ./README Fri May 10 03:15:32 1991
***************
*** 1,4 ****
! PSROFF RELEASE 3.0 README 2.17 91/04/02
Feb 19, 1991
Chris Lewis
--- 1,4 ----
! PSROFF RELEASE 3.0 README 2.19 91/04/24
Feb 19, 1991
Chris Lewis
***************
*** 149,159 ****
gfnttab (discussed later).
- The ditroff *input* handler is quite new, and hasn't been
! tested all that extensively. Preliminary results seem to
! suggest that it does work, but documentation is scanty,
! and there's not much in the way of automated install or
! configuration checking for real ditroff. See the DITROFF
! file for additional information.
- Fonts:
- postscript driving - psroff uses what's on the printer - the
--- 149,159 ----
gfnttab (discussed later).
- The ditroff *input* handler is quite new, and hasn't been
! tested all that extensively. See the DITROFF file for
! additional information.
!
! - This software should work with groff, see the DITROFF file for
! further details.
- Fonts:
- postscript driving - psroff uses what's on the printer - the
***************
*** 432,443 ****
Chris Lewis
Elegant Communications Inc.
! Box 13215, Kanata PO
! Kanata, Ontario, K2K 1X4
Voice Phone: Canada (613) 832-0541
Userid's for e-mail contact:
Psroff enquiries/help: psroff-request
Non-psroff mail only: clewis
! UUCP routing: uunet!mitel!cunews!latour!ecicrl!<userid>
! Possible internet routing: <userid>@ferret.ocunix.on.ca
Alternate: <user>@eci386.uucp
--- 432,444 ----
Chris Lewis
Elegant Communications Inc.
! P.O. Box 124
! Dunrobin, Ontario,
! Canada K0A 1T0
Voice Phone: Canada (613) 832-0541
Userid's for e-mail contact:
Psroff enquiries/help: psroff-request
Non-psroff mail only: clewis
! Address: <userid>@ferret.ocunix.on.ca
! Alternate UUCP routing: uunet!mnetor!lsuc!eci386!ecicrl!<userid>
Alternate: <user>@eci386.uucp
Index: ./troff2.c
*** /tmp/PATCHold/./troff2.c Fri May 10 03:15:49 1991
--- ./troff2.c Fri May 10 03:15:51 1991
***************
*** 12,18 ****
#ifndef lint
static char SCCSid[] =
! "@(#)troff2.c: 2.15 Copyright 91/03/25 23:20:47 Chris Lewis";
#endif
#define ESC 0x80
--- 12,18 ----
#ifndef lint
static char SCCSid[] =
! "@(#)troff2.c: 2.17 Copyright 91/05/03 10:41:03 Chris Lewis";
#endif
#define ESC 0x80
***************
*** 86,94 ****
int optimize = 0;
#endif
extern char *realloc();
! #define OPTLIST "d:O:Y:T:VD:l:MR:P::zp:W:ZNS"
/* On 386/ix 1.0.6 profiling has a bug in it that leaves
two extra longs on the stack between the stack frame and
--- 86,98 ----
int optimize = 0;
#endif
+ #ifdef DIT
+ int sizescale;
+ #endif
+
extern char *realloc();
! #define OPTLIST "d:O:Y:T:VD:l:MR:P::zp:W:ZNSG:"
/* On 386/ix 1.0.6 profiling has a bug in it that leaves
two extra longs on the stack between the stack frame and
***************
*** 214,220 ****
--- 218,228 ----
#ifdef DIT
ditroff = 1;
break;
+ case 'G':
+ sizescale = atoi(optarg);
+ break;
#else
+ case 'S':
fprintf(stderr, "%s: ditroff frontend not configured\n");
exit(1);
#endif
Index: ./MISC
*** /tmp/PATCHold/./MISC Fri May 10 03:16:04 1991
--- ./MISC Fri May 10 03:16:06 1991
***************
*** 1,6 ****
Miscellaneous Tuning/Customization
! 2.9 91/03/26
- Postscript spooling: Theoretically speaking, it is better
to have psxlate in your Postscript printer spooler interface
than as a pipeline in psroff. For System V, you might want
--- 1,26 ----
Miscellaneous Tuning/Customization
! 2.10 91/05/10
+ - Vertical bars in eqn may not be vertical. This is a botch
+ in some versions of eqn - namely, eqn is asking for "|"
+ in italic. You see this by:
+
+ .EQ
+ left nothing {d f(x)} over {d x} right |
+ .EN
+
+ Which may (depending on your eqn) look like:
+ df(x) /
+ ----- /
+ dx /
+
+ Fix by appending:
+ normal
+ | 0
+
+ to the appropriate *.lib file. Then all "|" will be
+ from the Times-Roman font. Ugly, but the only way to
+ fix eqn vertical bars.
- Postscript spooling: Theoretically speaking, it is better
to have psxlate in your Postscript printer spooler interface
than as a pipeline in psroff. For System V, you might want
Index: ./defs.h
*** /tmp/PATCHold/./defs.h Fri May 10 03:16:18 1991
--- ./defs.h Fri May 10 03:16:22 1991
***************
*** 9,15 ****
*/
/* Official Release and Patch level: */
! #define T2VERSION "@(#)PSROFF Copyright 91/03/25 Chris Lewis - R3 PL0"
/* Configuration parameters:
*/
--- 9,15 ----
*/
/* Official Release and Patch level: */
! #define T2VERSION "@(#)PSROFF Copyright 91/04/26 Chris Lewis - R3 PL1"
/* Configuration parameters:
*/
Index: ./TROUBLE
*** /tmp/PATCHold/./TROUBLE Fri May 10 03:16:34 1991
--- ./TROUBLE Fri May 10 03:16:36 1991
***************
*** 1,4 ****
! Psroff 3.0 Trouble Shooting.... 2.11 91/04/02
(psroff 1.0 users can use this to a certain extent. This is relatively
unchanged from Psroff 2.0 except for the ditroff input capability)
--- 1,4 ----
! Psroff 3.0 Trouble Shooting.... 2.13 91/05/10
(psroff 1.0 users can use this to a certain extent. This is relatively
unchanged from Psroff 2.0 except for the ditroff input capability)
***************
*** 22,28 ****
you run "make check" first and correct any "ERROR"'s it reports
that apply to the configuration (driver/printer) you wish to use.
If you encounter problems you cannot solve and wish to ask me for
! help, I will want you to send me a copy of "make check"'s output....
Definitions:
- LIBDIR - default /usr/lib/troff2 (config option in Makefile)
--- 22,29 ----
you run "make check" first and correct any "ERROR"'s it reports
that apply to the configuration (driver/printer) you wish to use.
If you encounter problems you cannot solve and wish to ask me for
! help, I will want you to send me a copy of "make check"'s output.
! But don't send it to me unless I ask for it.
Definitions:
- LIBDIR - default /usr/lib/troff2 (config option in Makefile)
***************
*** 228,233 ****
--- 229,238 ----
Run psroff debug. Check for and correct troff error messages (eg:
line too long) in your document. This could even be troff not being
able to find a file you specified to psroff.
+
+ Vertical lines in EQN are made up of slashes rather than a vertical line.
+
+ See MISC file for details.
Character widths wildly and inconsistently off:
Index: ./DITROFF
*** /tmp/PATCHold/./DITROFF Fri May 10 03:16:54 1991
--- ./DITROFF Fri May 10 03:16:56 1991
***************
*** 1,8 ****
! Ditroff input configuration notes
! 2.3 91/02/20
This document attempts to describe some of the issues of using
! psroff with ditroff instead of CAT troff.
The heart of the whole issue is the use of the -N option
to troff2ps (see lib/psrofflib.S). Which permits the translation
--- 1,10 ----
! Ditroff/Groff input configuration notes
! 2.4 91/04/17
This document attempts to describe some of the issues of using
! psroff with ditroff or groff instead of CAT troff. Some of the
! general issues about ditroff apply to groff as well. There is,
! however, a groff specific section at the end of this file.
The heart of the whole issue is the use of the -N option
to troff2ps (see lib/psrofflib.S). Which permits the translation
***************
*** 31,36 ****
--- 33,40 ----
only installs CAT-compatible width tables in FONTDIR/<widthname>/ft*,
yet, ditroff will insist upon a FONTDIR/dev<widthname>/*.out format.
+ Groff width tables are somewhat different - see the end of this file.
+
The supplied lj3 and ps widths (widths/width???) files are designed to
operate with full ditroff. To use them, copy widths/widthlj3/[A-Z]* to
FONTDIR/devlj3 or widths/widthps/[A-Z]* to FONTDIR/devpsc. Then,
***************
*** 61,67 ****
Macro Adapters & Page offsets:
-----------------------------
! When you specify "-mm", tsroff goes and looks for a file called
"tmac.m" in the macro library area, namely, /usr/lib/tmac.
In order to support CAT troff, psroff looks in LIBDIR/adapters
for a file called tmac.m, which includes LIBDIR/adapters/cmn.pre
--- 65,71 ----
Macro Adapters & Page offsets:
-----------------------------
! When you specify "-mm", psroff goes and looks for a file called
"tmac.m" in the macro library area, namely, /usr/lib/tmac.
In order to support CAT troff, psroff looks in LIBDIR/adapters
for a file called tmac.m, which includes LIBDIR/adapters/cmn.pre
***************
*** 85,87 ****
--- 89,135 ----
Also, you'll probably want to override the default 1/2 inch offset
that troff2ps implements by specifying -O0 in the t2arg entry of
lib/psrofflib.S.
+
+ You should test this stuff first, because the -N option overrides
+ part of the adapter file search.
+
+ Groff
+ -----
+
+ Groff is a complete implementation of ditroff, plus several different
+ output drivers (Postscript, tty, DVI). Generally speaking, you
+ won't need psroff if you have groff, but there are a few places
+ where groff and psroff can be used together to advantage.
+
+ First of all, groff doesn't support HP Laserjet or LJIII output.
+ In this case, you can drive troff2ps -N with gtroff output. For
+ width tables, you would copy the psroff's
+ widthps/width[lj,lj3,lj3u]*/[A-Z]* files to the appropriate
+ places in /usr/lib/font/dev<type> and modify the groff shell
+ script to call troff2ps (you will need to specify the -N option,
+ plus set the -p and -T values). You will probably have to build
+ up a proper DESC file for widthlj if you aren't driving a LJ3.
+
+ Secondly, if you want to drive DVI interfaces from CAT troff, you
+ can use the ditroff-2-dvi converter with psroff's ditroff output
+ option (-Tdt). I'm not entirely sure why you'd want to do this
+ if you have all of groff loaded - but it might be useful.
+
+ The fundamental differences between ditroff and groff (as far as
+ *we* are concerned) is the differing width table format. First,
+ groff does not need to compile the width table format into
+ a binary format - the ASCII versions are used in the
+ /usr/lib/font/dev<type> directory directly. Psroff doesn't
+ copy these files (eg: R, I, B, S etc.) into this directory,
+ so you'll have to do it yourself, tho, groff installation
+ probably has already done that. Secondly, there is the
+ "sizescale" DESC parameter, which prescales the unitwidth
+ and character widths values, as well as the point size selection
+ in the gtroff output. At present, troff2ps does not support
+ a sizescale other than 1 (psroff will try to emit glyphs
+ sizescale times larger than actually desired).
+
+ The width tables that come with psroff should work with groff.
+ The groff width tables can also be used with psroff, but this
+ should not be necessary - unless you're trying to use groff's
+ tty or dvi output filters.
Index: ./LICENSE
*** /tmp/PATCHold/./LICENSE Fri May 10 03:17:08 1991
--- ./LICENSE Fri May 10 03:17:09 1991
***************
*** 1,5 ****
! Psroff 3.0 Licensing Information
! 2.2 91/02/20
1) All code, except where noted, is:
Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991 Chris Lewis,
--- 1,5 ----
! Psroff 3.0 Licensing Information
! 2.3 91/04/24
1) All code, except where noted, is:
Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991 Chris Lewis,
***************
*** 12,19 ****
a non-source package in their software releases should contact me:
Chris Lewis
! Box 13215, Kanata PO
! Kanata, Ontario, K2K 1X4
Voice Phone: Canada (613) 832-0541
2) psdtwid and some of the character drawing and spacing
--- 12,20 ----
a non-source package in their software releases should contact me:
Chris Lewis
! P.O. Box 124
! Dunrobin, Ontario,
! Canada K0A 1T0
Voice Phone: Canada (613) 832-0541
2) psdtwid and some of the character drawing and spacing
--
Chris Lewis, Phone: (613) 832-0541, Domain: clewis@ferret.ocunix.on.ca
UUCP: ...!cunews!latour!ecicrl!clewis; Ferret Mailing List:
ferret-request@eci386; Psroff (not Adobe Transcript) enquiries:
psroff-request@eci386 or Canada 416-832-0541. Psroff 3.0 in c.s.u soon!
exit 0 # Just in case...