home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 3 / 3602 < prev    next >
Internet Message Format  |  1991-07-10  |  16KB

  1. From: clewis@ferret.ocunix.on.ca (Chris Lewis)
  2. Newsgroups: comp.sources.bugs,comp.lang.postscript,alt.sources
  3. Subject: Psroff 3.0 Patch 2
  4. Message-ID: <2280@ecicrl.ocunix.on.ca>
  5. Date: 10 Jul 91 14:21:11 GMT
  6.  
  7.  
  8. Archive-name: psroff3.0/Patch.02
  9. Submitted-by: clewis@ferret.ocunix.on.ca (Chris Lewis)
  10.  
  11.     This is official patch 02 for Psroff 3.0.
  12.     Please apply it by:
  13.     cd <psroff source directory>
  14.     patch -N -p < <this file>
  15.  
  16. Fixes this patch:
  17.     1) if you undefined DIT in defs.h, compilation failed in
  18.        two places.  Fixed.
  19.     2) Made asc2ps possible to distribute without anything else.
  20.        (not applicable in psroff release)
  21.     3) some things should have been unsigned char.
  22.     4) catconv supports \!, fixed up a passthru repositioning
  23.        botch (sR "P...").  Necessitated for supporting pspic
  24.        (a postscript includer mechanism that passes thru the
  25.        entire postscript file as \!! rather than relying on an
  26.        include mechanism in the back end.)
  27.     5) -N coredump
  28.  
  29.  
  30. ./utils/catconv.S    Supports \!
  31. ./utils/dumpft.c    unsigned char
  32. ./utils/asc2ps.c    STANDALONE
  33. ./dit.c            unsigned char
  34. ./troff2.c        #undef DIT fix/passthru botch
  35. ./defs.h        Patch level
  36. ./utils.c        #undef DIT fix
  37. ./dt.c            passthru of \! & \X fix
  38. ./cattab.c        unsigned char.
  39. Index: ./utils/catconv.S
  40. *** /tmp/PATCHold/./utils/catconv.S    Mon Jun  3 12:57:18 1991
  41. --- ./utils/catconv.S    Mon Jun  3 12:57:19 1991
  42. ***************
  43. *** 13,19 ****
  44.   #
  45.   #    This does a very simpleminded conversion of ditroff-only-isms
  46.   #    (such as graphics) into something handleable by CAT troff.
  47. ! #    1.6 91/03/25
  48.   $cc{'em'}=1; $cc{'ru'}=1; $cc{'14'}=1; $cc{'12'}=1; $cc{'hy'}=1;
  49.   $cc{'34'}=1; $cc{'fi'}=1; $cc{'fl'}=1; $cc{'ff'}=1; $cc{'ct'}=1;
  50.   $cc{'Fl'}=1; $cc{'Fi'}=1; $cc{'de'}=1; $cc{'dg'}=1; $cc{'rg'}=1;
  51. --- 13,19 ----
  52.   #
  53.   #    This does a very simpleminded conversion of ditroff-only-isms
  54.   #    (such as graphics) into something handleable by CAT troff.
  55. ! #    1.7 91/05/30
  56.   $cc{'em'}=1; $cc{'ru'}=1; $cc{'14'}=1; $cc{'12'}=1; $cc{'hy'}=1;
  57.   $cc{'34'}=1; $cc{'fi'}=1; $cc{'fl'}=1; $cc{'ff'}=1; $cc{'ct'}=1;
  58.   $cc{'Fl'}=1; $cc{'Fi'}=1; $cc{'de'}=1; $cc{'dg'}=1; $cc{'rg'}=1;
  59. ***************
  60. *** 70,75 ****
  61. --- 70,78 ----
  62.       $line = do Xprocess($line);
  63.       }
  64.       $line = do findspecials($line);
  65. +     if ($line =~ /^\\!(.*)/) {
  66. +     $line = ".sR \"$1\"";
  67. +     }
  68.       print "$line\n";
  69.       while($index) {
  70.       print ".rr" . $regpref . $regnames[--$index] . "\n";
  71. ***************
  72. *** 94,99 ****
  73. --- 97,103 ----
  74.       return("$predefs$newline");
  75.   }
  76.   
  77. + #    Convert drawing commands
  78.   sub process {
  79.       local($line, $newline, $pre, $opcode, $arglist) = ($_[0]);
  80.   #    printf("in process: $line\n");
  81. ***************
  82. *** 147,152 ****
  83. --- 151,157 ----
  84.       return("$predefs$newline");
  85.   }
  86.   
  87. + #    Convert \X directives
  88.   sub Xprocess {
  89.       local($line, $newline, $pre, $opcode, $arglist) = ($_[0]);
  90.   #    printf("in process: $line\n");
  91. Index: ./utils/dumpft.c
  92. *** /tmp/PATCHold/./utils/dumpft.c    Mon Jun  3 12:57:28 1991
  93. --- ./utils/dumpft.c    Mon Jun  3 12:57:29 1991
  94. ***************
  95. *** 10,16 ****
  96.   
  97.   #ifndef    lint
  98.   static char SCCSID[] =
  99. !     "@(#)dumpft.c 2.7 Copyright 91/02/20 09:11:14 Chris Lewis";
  100.   #endif
  101.   
  102.   #include "../defs.h"
  103. --- 10,16 ----
  104.   
  105.   #ifndef    lint
  106.   static char SCCSID[] =
  107. !     "@(#)dumpft.c 2.8 Copyright 91/05/28 12:07:47 Chris Lewis";
  108.   #endif
  109.   
  110.   #include "../defs.h"
  111. ***************
  112. *** 282,288 ****
  113.       for(g = 0; g <= filesize - 224; g++) {
  114.       errcnt = 0;
  115.       for (i = 0; tabN[i].ch_name; i++) {
  116. !         if (tabN[i].ch_wididx == -1)
  117.           continue;
  118.           if (tabN[i].ch_name[0] && !buffer[g+tabN[i].ch_wididx]) {
  119.           if (verbose) {
  120. --- 282,288 ----
  121.       for(g = 0; g <= filesize - 224; g++) {
  122.       errcnt = 0;
  123.       for (i = 0; tabN[i].ch_name; i++) {
  124. !         if (tabN[i].ch_wididx == N)
  125.           continue;
  126.           if (tabN[i].ch_name[0] && !buffer[g+tabN[i].ch_wididx]) {
  127.           if (verbose) {
  128. Index: ./utils/asc2ps.c
  129. *** /tmp/PATCHold/./utils/asc2ps.c    Mon Jun  3 12:57:38 1991
  130. --- ./utils/asc2ps.c    Mon Jun  3 12:57:39 1991
  131. ***************
  132. *** 14,23 ****
  133.   
  134.   #ifndef    lint
  135.   static char SCCSid[] =
  136. !     "@(#)asc2ps.c: 2.4 Copyright 91/04/10 19:48:00 Chris Lewis";
  137.   #endif
  138.   
  139.   #include "defs.h"
  140.   
  141.   double height = 11.0;
  142.   double width = 8.5;
  143. --- 14,45 ----
  144.   
  145.   #ifndef    lint
  146.   static char SCCSid[] =
  147. !     "@(#)asc2ps.c: 2.5 Copyright 91/05/25 21:27:18 Chris Lewis";
  148.   #endif
  149.   
  150. + #ifndef    STANDALONE
  151.   #include "defs.h"
  152. + #else
  153. + /*    Configuration section for STANDALONE version of asc2ps (when compiled
  154. +     without the rest of psroff 3.0).
  155. +  */
  156. + #define    NODECMD    "uuname -l"    /* returns your uucp node name, use
  157. +                    "echo your-machine-name" if you don't
  158. +                    have uuname */
  159. +                     
  160. + #undef    strchr    index        /* define if you don't have strchr() */
  161. + #include <stdio.h>
  162. + #include <ctype.h>
  163. + #include <string.h>        /* change to strings.h if necessary */
  164. + /*    Dinna touch from here on */
  165. + #define    ALONE
  166. + #define    max(a,b)    ((a) > (b) ? (a) : (b))
  167. + #endif
  168.   
  169.   double height = 11.0;
  170.   double width = 8.5;
  171. Index: ./dit.c
  172. *** /tmp/PATCHold/./dit.c    Mon Jun  3 12:57:47 1991
  173. --- ./dit.c    Mon Jun  3 12:57:49 1991
  174. ***************
  175. *** 12,18 ****
  176.   
  177.   #ifndef    lint
  178.   static char SCCSid[] =
  179. !     "@(#)dit.c: 91/04/24 Copyright 91/04/24 21:48:46 Chris Lewis";
  180.   #endif
  181.   
  182.   extern struct cattab tabN[], tabS[], *extidx;
  183. --- 12,18 ----
  184.   
  185.   #ifndef    lint
  186.   static char SCCSid[] =
  187. !     "@(#)dit.c: 91/05/30 Copyright 91/05/30 01:45:57 Chris Lewis";
  188.   #endif
  189.   
  190.   extern struct cattab tabN[], tabS[], *extidx;
  191. ***************
  192. *** 134,140 ****
  193.   #ifdef    DIT
  194.   
  195.   int sizescale = 1;
  196. ! int indtres;
  197.   
  198.   int points, font, ch, i;
  199.   int xpos, ypos;
  200. --- 134,140 ----
  201.   #ifdef    DIT
  202.   
  203.   int sizescale = 1;
  204. ! int indtres = 300;
  205.   
  206.   int points, font, ch, i;
  207.   int xpos, ypos;
  208. ***************
  209. *** 415,422 ****
  210.   #endif
  211.           i = 1;
  212.           special[0] = cmd;
  213. -         while((ch = getchar()) != EOF && isspace(ch));
  214. -         special[i++] = ch;
  215.           while((ch = getchar()) != EOF && ch != '\n')
  216.               special[i++] = ch;
  217.           special[i] = '\0';
  218. --- 415,420 ----
  219. ***************
  220. *** 427,434 ****
  221.               break;
  222.               case '!':
  223.               special[0] = 'P';
  224. !             dospecial(xpos * TROFFRESOLUTION / indtres,
  225. !                      ypos * TROFFRESOLUTION / indtres,
  226.                        special);
  227.               break;
  228.               case 'D': {
  229. --- 425,432 ----
  230.               break;
  231.               case '!':
  232.               special[0] = 'P';
  233. !             dospecial(/*xpos * TROFFRESOLUTION / indtres,
  234. !                      ypos * TROFFRESOLUTION / indtres,*/
  235.                        special);
  236.               break;
  237.               case 'D': {
  238. Index: ./troff2.c
  239. *** /tmp/PATCHold/./troff2.c    Mon Jun  3 12:58:00 1991
  240. --- ./troff2.c    Mon Jun  3 12:58:02 1991
  241. ***************
  242. *** 12,18 ****
  243.   
  244.   #ifndef    lint
  245.   static char SCCSid[] =
  246. !     "@(#)troff2.c: 2.17 Copyright 91/05/03 10:41:03 Chris Lewis";
  247.   #endif
  248.   
  249.   #define    ESC    0x80
  250. --- 12,18 ----
  251.   
  252.   #ifndef    lint
  253.   static char SCCSid[] =
  254. !     "@(#)troff2.c: 2.18 Copyright 91/05/30 01:46:09 Chris Lewis";
  255.   #endif
  256.   
  257.   #define    ESC    0x80
  258. ***************
  259. *** 222,229 ****
  260.               sizescale = atoi(optarg);
  261.               break;
  262.   #else
  263. !         case 'S':
  264. !             fprintf(stderr, "%s: ditroff frontend not configured\n");
  265.               exit(1);
  266.   #endif
  267.           case 'M':
  268. --- 222,230 ----
  269.               sizescale = atoi(optarg);
  270.               break;
  271.   #else
  272. !         case 'G':
  273. !             fprintf(stderr, "%s: ditroff frontend not configured\n",
  274. !             progname);
  275.               exit(1);
  276.   #endif
  277.           case 'M':
  278. ***************
  279. *** 738,747 ****
  280.           *string = '\0';
  281.           return;
  282.   
  283.           case 'p':
  284.           case 'P':
  285. !         if (be->bedraw)
  286. !             (*be->bedraw)(specXPos, specYPos, NULL);
  287.           if (be->bepassthru)
  288.               (*be->bepassthru)(string+1);
  289.           else
  290. --- 739,754 ----
  291.           *string = '\0';
  292.           return;
  293.   
  294. +         case '!':
  295.           case 'p':
  296.           case 'P':
  297. !         {
  298. !             static int lastsX, lastsY;
  299. !             if ((lastsX != specXPos || lastsY != specYPos) && be->bedraw)
  300. !             (*be->bedraw)(specXPos, specYPos, NULL);
  301. !             lastsX = specXPos;
  302. !             lastsY = specYPos;
  303. !         }
  304.           if (be->bepassthru)
  305.               (*be->bepassthru)(string+1);
  306.           else
  307. Index: ./defs.h
  308. *** /tmp/PATCHold/./defs.h    Mon Jun  3 12:58:16 1991
  309. --- ./defs.h    Mon Jun  3 12:58:17 1991
  310. ***************
  311. *** 9,15 ****
  312.    */
  313.   
  314.   /*    Official Release and Patch level:    */
  315. ! #define    T2VERSION    "@(#)PSROFF Copyright 91/04/26 Chris Lewis - R3 PL1"
  316.   
  317.   /*    Configuration parameters:
  318.    */
  319. --- 9,15 ----
  320.    */
  321.   
  322.   /*    Official Release and Patch level:    */
  323. ! #define    T2VERSION    "@(#)PSROFF Copyright 91/05/28 Chris Lewis - R3 PL2"
  324.   
  325.   /*    Configuration parameters:
  326.    */
  327. ***************
  328. *** 259,265 ****
  329.   
  330.   struct cattab {
  331.       char *ch_name;
  332. !     char ch_set;
  333.       unsigned char ch_catidx;
  334.       unsigned char ch_wididx;
  335.       unsigned char ch_info;    /* used by some auxiliary programs */
  336. --- 259,265 ----
  337.   
  338.   struct cattab {
  339.       char *ch_name;
  340. !     unsigned char ch_set;
  341.       unsigned char ch_catidx;
  342.       unsigned char ch_wididx;
  343.       unsigned char ch_info;    /* used by some auxiliary programs */
  344. Index: ./utils.c
  345. *** /tmp/PATCHold/./utils.c    Mon Jun  3 12:58:27 1991
  346. --- ./utils.c    Mon Jun  3 12:58:29 1991
  347. ***************
  348. *** 12,18 ****
  349.   
  350.   #ifndef    lint
  351.   static char SCCSid[] =
  352. !     "@(#)utils.c: 2.14 Copyright 91/04/05 01:21:20 Chris Lewis";
  353.   #endif
  354.   
  355.   #ifndef    HEADERSIZE
  356. --- 12,18 ----
  357.   
  358.   #ifndef    lint
  359.   static char SCCSid[] =
  360. !     "@(#)utils.c: 2.15 Copyright 91/05/30 01:46:27 Chris Lewis";
  361.   #endif
  362.   
  363.   #ifndef    HEADERSIZE
  364. ***************
  365. *** 412,418 ****
  366. --- 412,422 ----
  367.       register struct fonttable *p;
  368.       int intfont;
  369.       DBP((D_SPEC, "FontSel: %c -> %s\n", from, to));
  370. + #ifdef    DIT
  371.       if (from < (ditroff? '0' : '1') || from > '9') {
  372. + #else
  373. +     if (from < '1' || from > '9') {
  374. + #endif
  375.       fprintf(stderr, "Bad arguments to FontSel: %c %s\n", from, to);
  376.       return;
  377.       }
  378. Index: ./dt.c
  379. *** /tmp/PATCHold/./dt.c    Mon Jun  3 12:58:39 1991
  380. --- ./dt.c    Mon Jun  3 12:58:41 1991
  381. ***************
  382. *** 12,18 ****
  383.   
  384.   #ifndef    lint
  385.   static char SCCSid[] =
  386. !     "@(#)dt.c: 2.6 Copyright 91/03/10 03:12:46 Chris Lewis";
  387.   #endif
  388.   
  389.   /*    These two tables are always included so that we have the
  390. --- 12,18 ----
  391.   
  392.   #ifndef    lint
  393.   static char SCCSid[] =
  394. !     "@(#)dt.c: 2.7 Copyright 91/05/30 01:46:37 Chris Lewis";
  395.   #endif
  396.   
  397.   /*    These two tables are always included so that we have the
  398. ***************
  399. *** 459,465 ****
  400.   
  401.   dtPassthru(s)
  402.   register char *s; {
  403. !     printf("x X %s\n", s);
  404.   }
  405.   
  406.   dtEpilog() {
  407. --- 459,465 ----
  408.   
  409.   dtPassthru(s)
  410.   register char *s; {
  411. !     printf("!%s\n", s);
  412.   }
  413.   
  414.   dtEpilog() {
  415. ***************
  416. *** 473,480 ****
  417. --- 473,485 ----
  418.   register char *s; {
  419.       register int temp, t2;
  420.       DBP((D_CAT, "dtDraw: (%d,%d): %s\n", origX, origY, s));
  421.       printf("H%d\n", TROFF2DTX(origX));
  422.       printf("V%d\n", TROFF2DTY(origY));
  423. +     if (!s)
  424. +     return;
  425.       putchar('D');
  426.       putchar(*s);
  427.       s++;
  428. Index: ./cattab.c
  429. *** /tmp/PATCHold/./cattab.c    Mon Jun  3 12:58:51 1991
  430. --- ./cattab.c    Mon Jun  3 12:58:52 1991
  431. ***************
  432. *** 36,42 ****
  433.   
  434.   #ifndef lint
  435.   static char SCCSid[] =
  436. !     "@(#)cattab.c: 2.2 Copyright 91/02/20 09:07:04 Chris Lewis";
  437.   #endif
  438.   
  439.   #include "defs.h"
  440. --- 36,42 ----
  441.   
  442.   #ifndef lint
  443.   static char SCCSid[] =
  444. !     "@(#)cattab.c: 2.3 Copyright 91/05/28 12:06:08 Chris Lewis";
  445.   #endif
  446.   
  447.   #include "defs.h"
  448. ***************
  449. *** 75,85 ****
  450.       {"j",    N,  12,  74, 0, "j"},
  451.       {"u",    N,  13,  85, 0, "u"},
  452.       {"k",    N,  14,  75, 0, "k"},
  453. !     {"",    N,  15,  -1, 0, NOC},
  454.       {"p",    N,  16,  80, 0, "p"},
  455.       {"em",    N,  17,  99, 0, "3/4 em"},
  456.       {";",    N,  18,  27, 0, ";"},
  457. !     {"",    N,  19,  -1, 0, NOC},
  458.       {"a",    N,  20,  65, 0, "a"},
  459.       {"ru",    N,  21, 100, 0, "horizontal rule"},
  460.       {"c",    N,  22,  67, 0, "c"},
  461. --- 75,85 ----
  462.       {"j",    N,  12,  74, 0, "j"},
  463.       {"u",    N,  13,  85, 0, "u"},
  464.       {"k",    N,  14,  75, 0, "k"},
  465. !     {"",    N,  15,   N, 0, NOC},
  466.       {"p",    N,  16,  80, 0, "p"},
  467.       {"em",    N,  17,  99, 0, "3/4 em"},
  468.       {";",    N,  18,  27, 0, ";"},
  469. !     {"",    N,  19,   N, 0, NOC},
  470.       {"a",    N,  20,  65, 0, "a"},
  471.       {"ru",    N,  21, 100, 0, "horizontal rule"},
  472.       {"c",    N,  22,  67, 0, "c"},
  473. ***************
  474. *** 101,109 ****
  475.       {",",    N,  38,  12, 0, ","},
  476.       {"&",    N,  39,   6, 0, "&"},
  477.       {"y",    N,  40,  89, 0, "y"},
  478. !     {"",    N,  41,  -1, 0, NOC},
  479.       {"%",    N,  42,   5, 0, "%"},
  480. !     {"",    N,  43,  -1, 0, NOC},
  481.       {"Q",    N,  44,  49, 0, "Q"},
  482.       {"T",    N,  45,  52, 0, "T"},
  483.       {"O",    N,  46,  47, 0, "O"},
  484. --- 101,109 ----
  485.       {",",    N,  38,  12, 0, ","},
  486.       {"&",    N,  39,   6, 0, "&"},
  487.       {"y",    N,  40,  89, 0, "y"},
  488. !     {"",    N,  41,   N, 0, NOC},
  489.       {"%",    N,  42,   5, 0, "%"},
  490. !     {"",    N,  43,   N, 0, NOC},
  491.       {"Q",    N,  44,  49, 0, "Q"},
  492.       {"T",    N,  45,  52, 0, "T"},
  493.       {"O",    N,  46,  47, 0, "O"},
  494. ***************
  495. *** 158,170 ****
  496.       {"rg",    N,  95, 189, 0, "registered"},
  497.       {":",    N,  96,  26, 0, ":"},
  498.       {"+",    N,  97,  11, 0, "+"},
  499. !     {"",    N,  98,  -1, 0, NOC},
  500.       {"!",    N,  99,   1, 0, "!"},
  501.       {"bu",    N, 100,  97, 0, "bullet"},
  502.       {"?",    N, 101,  31, 0, "?"},
  503.       {"fm",    N, 102, 113, 0, "foot mark (minute)"},
  504.       {"|",    N, 103,  92, 0, "|"},
  505. !     {"",    N, 104,  -1, 0, NOC},
  506.       {"co",    N, 105, 190, 0, "copyright"},
  507.       {"sq",    N, 106,  98, 0, "square"},
  508.       {"$",    N, 107,   4, 0, "$"},
  509. --- 158,170 ----
  510.       {"rg",    N,  95, 189, 0, "registered"},
  511.       {":",    N,  96,  26, 0, ":"},
  512.       {"+",    N,  97,  11, 0, "+"},
  513. !     {"",    N,  98,   N, 0, NOC},
  514.       {"!",    N,  99,   1, 0, "!"},
  515.       {"bu",    N, 100,  97, 0, "bullet"},
  516.       {"?",    N, 101,  31, 0, "?"},
  517.       {"fm",    N, 102, 113, 0, "foot mark (minute)"},
  518.       {"|",    N, 103,  92, 0, "|"},
  519. !     {"",    N, 104,   N, 0, NOC},
  520.       {"co",    N, 105, 190, 0, "copyright"},
  521.       {"sq",    N, 106,  98, 0, "square"},
  522.       {"$",    N, 107,   4, 0, "$"},
  523. ***************
  524. *** 191,201 ****
  525.       {"*f",    S,  12, 140, 0, "phi"},
  526.       {"*u",    S,  13, 139, 0, "upsilon"},
  527.       {"*k",    S,  14, 129, 0, "kappa"},
  528. !     {"",    S,  15,  -1, 0, NOC},
  529.       {"*p",    S,  16, 135, 0, "pi"},
  530.       {"@",    S,  17,  32, 0, "@"},
  531.       {"da",    S,  18, 169, 0, "down arrow"},
  532. !     {"",    S,  19,  -1, 0, NOC},
  533.       {"*a",    S,  20, 120, 0, "alpha"},
  534.       {"or",    S,  21, 198, 0, "or (was star)"},
  535.       {"*x",    S,  22, 141, 0, "chi"},
  536. --- 191,201 ----
  537.       {"*f",    S,  12, 140, 0, "phi"},
  538.       {"*u",    S,  13, 139, 0, "upsilon"},
  539.       {"*k",    S,  14, 129, 0, "kappa"},
  540. !     {"",    S,  15,   N, 0, NOC},
  541.       {"*p",    S,  16, 135, 0, "pi"},
  542.       {"@",    S,  17,  32, 0, "@"},
  543.       {"da",    S,  18, 169, 0, "down arrow"},
  544. !     {"",    S,  19,   N, 0, NOC},
  545.       {"*a",    S,  20, 120, 0, "alpha"},
  546.       {"or",    S,  21, 198, 0, "or (was star)"},
  547.       {"*x",    S,  22, 141, 0, "chi"},
  548. ***************
  549. *** 217,225 ****
  550.       {"pt",    S,  38, 185, 0, "proportional to"},
  551.       {"rh",    S,  39, 194, 0, "right hand"},
  552.       {"*w",    S,  40, 143, 0, "omega"},
  553. !     {"",    S,  41,  -1, 0, NOC},
  554.       {"gr",    S,  42, 182, 0, "gradient"},
  555. !     {"",    S,  43,  -1, 0, NOC},
  556.       {"*F",    S,  44, 153, 0, "Phi"},
  557.       {"*H",    S,  45, 146, 0, "Theta"},
  558.       {"*W",    S,  46, 155, 0, "Omega"},
  559. --- 217,225 ----
  560.       {"pt",    S,  38, 185, 0, "proportional to"},
  561.       {"rh",    S,  39, 194, 0, "right hand"},
  562.       {"*w",    S,  40, 143, 0, "omega"},
  563. !     {"",    S,  41,   N, 0, NOC},
  564.       {"gr",    S,  42, 182, 0, "gradient"},
  565. !     {"",    S,  43,   N, 0, NOC},
  566.       {"*F",    S,  44, 153, 0, "Phi"},
  567.       {"*H",    S,  45, 146, 0, "Theta"},
  568.       {"*W",    S,  46, 155, 0, "Omega"},
  569. ***************
  570. *** 274,286 ****
  571.       {"mo",    S,  95, 187, 0, "member of"},
  572.       {"~",    S,  96,  94, 0, "~"},
  573.       {"es",    S,  97, 186, 0, "empty set"},
  574. !     {"",    S,  98,  -1, 0, NOC},
  575.       {"dd",    S,  99, 193, 0, "dbl dagger"},
  576.       {"br",    S, 100, 191, 0, "box rule (was parallel sign)"},
  577.       {"**",    S, 101, 196, 0, "math *"},
  578.       {"ib",    S, 102, 178, 0, "improper subset"},
  579.       {"ci",    S, 103, 199, 0, "circle"},
  580. !     {"",    S, 104, -1, 0, NOC},
  581.       {"pl",    S, 105, 188, 0, "equation plus"},
  582.       {"->",    S, 106, 166, 0, "right arrow"},
  583.       {"sc",    S, 107, 112, 0, "section"},
  584. --- 274,286 ----
  585.       {"mo",    S,  95, 187, 0, "member of"},
  586.       {"~",    S,  96,  94, 0, "~"},
  587.       {"es",    S,  97, 186, 0, "empty set"},
  588. !     {"",    S,  98,   N, 0, NOC},
  589.       {"dd",    S,  99, 193, 0, "dbl dagger"},
  590.       {"br",    S, 100, 191, 0, "box rule (was parallel sign)"},
  591.       {"**",    S, 101, 196, 0, "math *"},
  592.       {"ib",    S, 102, 178, 0, "improper subset"},
  593.       {"ci",    S, 103, 199, 0, "circle"},
  594. !     {"",    S, 104,   N, 0, NOC},
  595.       {"pl",    S, 105, 188, 0, "equation plus"},
  596.       {"->",    S, 106, 166, 0, "right arrow"},
  597.       {"sc",    S, 107, 112, 0, "section"},
  598.