home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-08-11 | 74.0 KB | 1,833 lines |
- Newsgroups: comp.sources.misc
- From: jeff@joyce.cs.su.oz.au (Jeff Kingston)
- Subject: v38i072: lout - Lout document formatting system, v2.05, Part04/35
- Message-ID: <1993Aug8.180620.11259@sparky.sterling.com>
- X-Md4-Signature: 6b428214ab8eeff15164e4029a34c6bb
- Sender: kent@sparky.sterling.com (Kent Landfield)
- Organization: Sterling Software
- Date: Sun, 8 Aug 1993 18:06:20 GMT
- Approved: kent@sparky.sterling.com
-
- Submitted-by: jeff@joyce.cs.su.oz.au (Jeff Kingston)
- Posting-number: Volume 38, Issue 72
- Archive-name: lout/part04
- Environment: UNIX
- Supersedes: lout: Volume 37, Issue 99-128
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then feed it
- # into a shell via "sh file" or similar. To overwrite existing files,
- # type "sh file -c".
- # Contents: externs.A include/tab
- # Wrapped by kent@sparky on Sun Aug 8 12:29:21 1993
- PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
- echo If this archive is complete, you will see the following message:
- echo ' "shar: End of archive 4 (of 35)."'
- if test -f 'externs.A' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'externs.A'\"
- else
- echo shar: Extracting \"'externs.A'\" \(46198 characters\)
- sed "s/^X//" >'externs.A' <<'END_OF_FILE'
- X/*@externs:External Declarations:Directories and file conventions@************/
- X/* */
- X/* LOUT: A HIGH-LEVEL LANGUAGE FOR DOCUMENT FORMATTING (VERSION 2.05) */
- X/* COPYRIGHT (C) 1993 Jeffrey H. Kingston */
- X/* */
- X/* Jeffrey H. Kingston (jeff@cs.su.oz.au) */
- X/* Basser Department of Computer Science */
- X/* The University of Sydney 2006 */
- X/* AUSTRALIA */
- X/* */
- X/* This program is free software; you can redistribute it and/or modify */
- X/* it under the terms of the GNU General Public License as published by */
- X/* the Free Software Foundation; either version 1, or (at your option) */
- X/* any later version. */
- X/* */
- X/* This program is distributed in the hope that it will be useful, */
- X/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
- X/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
- X/* GNU General Public License for more details. */
- X/* */
- X/* You should have received a copy of the GNU General Public License */
- X/* along with this program; if not, write to the Free Software */
- X/* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
- X/* */
- X/* FILE: externs */
- X/* MODULE: External Declarations */
- X/* */
- X/*****************************************************************************/
- X#include <stdio.h>
- X#include <string.h>
- X
- X/*****************************************************************************/
- X/* */
- X/* Include, font and database directories, and the DEBUG_ON and ASSERT_ON */
- X/* flags (defined by -D options on the cc command line in the makefile). */
- X/* */
- X/* LATIN Non-zero means compile for ISO-LATIN-1 char set. */
- X/* INCL_DIR The system directory where @Include files are kept */
- X/* FONT_DIR The system directory where .AFM font files are kept */
- X/* EVEC_DIR The system directory where .CEV files are kept */
- X/* DATA_DIR The system directory where database files are kept */
- X/* CHAR_IN Determines assignment of input chars to lex classes */
- X/* CHAR_OUT Determines appearance of literal chars in output */
- X/* DEBUG_ON Non-zero means compile debug code (lout -d) */
- X/* ASSERT_ON Non-zero means test assertions */
- X/* */
- X/* #define INCL_DIR "/usr/local/lib/lout/include" */
- X/* #define FONT_DIR "/usr/local/lib/lout/font" */
- X/* #define EVEC_DIR "/usr/local/lib/lout/evec" */
- X/* #define DATA_DIR "/usr/local/lib/lout/data" */
- X/* #define CHAR_IN 0 */
- X/* #define CHAR_OUT 0 */
- X/* #define DEBUG_ON 0 */
- X/* #define ASSERT_ON 1 */
- X/* */
- X/* File naming conventions and version */
- X/* */
- X/* LOUT_VERSION Version information */
- X/* CROSS_DB The default name of the cross reference database */
- X/* SOURCE_SUFFIX Optional suffix of source files and include files */
- X/* INDEX_SUFFIX The suffix of database index files */
- X/* NEW_INDEX_SUFFIX The suffix of new database index files */
- X/* DATA_SUFFIX The suffix of database data files */
- X/* NEW_DATA_SUFFIX The additional suffix of new database data files */
- X/* HYPH_FILENAME The default name of the unpacked hyphenation file */
- X/* HYPH_SUFFIX The suffix of the packed hyphenation file */
- X/* */
- X/*****************************************************************************/
- X
- X#define LOUT_VERSION AsciiToFull("Basser Lout Version 2.05 (July 1993)")
- X#define CROSS_DB AsciiToFull("lout")
- X#define SOURCE_SUFFIX AsciiToFull(".lout")
- X#define INDEX_SUFFIX AsciiToFull(".li")
- X#define NEW_INDEX_SUFFIX AsciiToFull(".lix")
- X#define DATA_SUFFIX AsciiToFull(".ld")
- X#define NEW_DATA_SUFFIX AsciiToFull("x")
- X#define HYPH_FILENAME AsciiToFull("lout.hyph")
- X#define HYPH_SUFFIX AsciiToFull(".pk")
- X
- X/*@::Significant limits@******************************************************/
- X/* */
- X/* Significant Limits (other insignificant ones appear in other files) */
- X/* */
- X/* MAX_LEN The maximum value storable in type LENGTH */
- X/* */
- X/* MAX_FILES 1 + the maximum number of files. This cannot */
- X/* exceed 256 without changing type FILE_NUM; and */
- X/* it cannot exceed 255 without increasing MAX_WORD */
- X/* (a WORD is used to hold an array indexed by */
- X/* filenum in file z10.c). */
- X/* */
- X/* MAX_LINE 1 + the maximum length of an input line, in files */
- X/* of all types. This cannot exceed 256, at least in */
- X/* source files, unless the col_num field of FILE_POS */
- X/* is enlarged beyond its present 1 byte unsigned */
- X/* */
- X/* MAX_WORD 1 + the maximum length of a word storable in an */
- X/* object record, which includes all file path names */
- X/* too. It is reasonable to make this MAX_LINE, since */
- X/* a word longer than MAX_LINE cannot be read in */
- X/* */
- X/* MAX_OBJECT_REC 1 + the maximum size of an object record, measured */
- X/* in ALIGNs. The value chosen should exceed */
- X/* ceiling( (wr + MAX_WORD - 4) / sizeof(ALIGN) ) */
- X/* where wr = sizeof(struct word_rec), so that words of */
- X/* length MAX_WORD-1 can be stored in an object record */
- X/* */
- X/* MAX_FONT 1 + the maximum number of sized fonts. This can be */
- X/* increased easily since font metric memory is */
- X/* obtained as required from malloc(). */
- X/* */
- X/* MAX_LEX_STACK The maximum depth of @Includes and @Databases. */
- X/* This can be increased easily if desired. */
- X/* */
- X/*****************************************************************************/
- X
- X#define MAX_LEN 32767
- X#define MAX_FILES 255
- X#define MAX_LINE 256
- X#define MAX_WORD 256
- X#define MAX_OBJECT_REC 73
- X#define MAX_FONT 100
- X#define MAX_LEX_STACK 5
- X
- X/*****************************************************************************/
- X/* */
- X/* Miscellaneous Macros */
- X/* */
- X/*****************************************************************************/
- X
- X#define BOOLEAN unsigned
- X#define FALSE 0
- X#define TRUE 1
- X#define bool(x) (x ? AsciiToFull("TRUE") : AsciiToFull("FALSE") )
- X#define CHILD 0
- X#define PARENT 1
- X#define COL 0
- X#define ROW 1
- X#define dimen(x) (x == COL ? AsciiToFull("COL") : AsciiToFull("ROW") )
- X#define nil ( (OBJECT) NULL )
- X#define null ( (FILE *) NULL )
- X
- X#define max(a, b) ((a) < (b) ? (b) : (a))
- X#define min(a, b) ((a) < (b) ? (a) : (b))
- X#define ceiling(a, b) ( ((a) - 1)/(b) + 1 ) /* ceiling(a/b) */
- X#define is_odd(x) ( (x) & 1 ) /* TRUE if x is odd number */
- X
- X
- X/*@::ALIGN, LENGTH, FONT_NUM, ENCODING, FULL_CHAR@****************************/
- X/* */
- X/* typedef ALIGN - the most restrictive memory alignment type. */
- X/* */
- X/*****************************************************************************/
- X
- Xtypedef char *ALIGN;
- X
- X
- X/*****************************************************************************/
- X/* */
- X/* typedef LENGTH - an integer physical distance. */
- X/* */
- X/*****************************************************************************/
- X
- Xtypedef short int LENGTH;
- X
- X
- X/*****************************************************************************/
- X/* */
- X/* FONT_NUM - internal name for a font. */
- X/* */
- X/*****************************************************************************/
- X
- Xtypedef unsigned char FONT_NUM;
- X
- X
- X/*****************************************************************************/
- X/* */
- X/* ENCODING - internal name for a character encoding vector. */
- X/* */
- X/*****************************************************************************/
- X
- Xtypedef unsigned char ENCODING;
- X
- X
- X/*****************************************************************************/
- X/* */
- X/* typedef FULL_CHAR - one of the characters manipulated by Lout. */
- X/* */
- X/* This program does not deal with 7-bit ASCII characters. Instead, its */
- X/* characters are defined by the FULL_CHAR typedef, and could be anything */
- X/* from 7-bit ASCII to 8-bit ISO-LATIN-1 to 16-bit UNICODE and beyond. */
- X/* */
- X/* Unfortunately C favours signed 8-bit characters: literal strings are */
- X/* pointers to them, argv[] and the standard libraries assume them. We get */
- X/* around these problems by using our own library, including AsciiToFull() */
- X/* to convert an ASCII string (such as a C string) into a FULL_CHAR string. */
- X/* */
- X/* Formally this library appears in module z39.c; however since this */
- X/* implementation uses 8-bit unsigned characters, most of the routines */
- X/* can be implemented by macros containing type-cast calls to C standard */
- X/* library routines. These appear in the z39.c externs list below. */
- X/* */
- X/*****************************************************************************/
- X
- Xtypedef unsigned char FULL_CHAR;
- X
- X
- X/*@::Character literals@******************************************************/
- X/* */
- X/* Character Literals */
- X/* */
- X/* The following macros ensure that no Lout source is ever compared to a */
- X/* literal character other than '\0': */
- X/* */
- X/*****************************************************************************/
- X
- X#define CH_FLAG_OUTFILE 'o' /* the -o command line flag */
- X#define CH_FLAG_SUPPRESS 's' /* the -s command line flag */
- X#define CH_FLAG_CROSS 'c' /* the -c command line flag */
- X#define CH_FLAG_ERRFILE 'e' /* the -e command line flag */
- X#define CH_FLAG_EPSFIRST 'E' /* first letter of the -EPS flag */
- X#define CH_FLAG_DIRPATH 'D' /* the -D command line flag */
- X#define CH_FLAG_ENCPATH 'C' /* the -C command line flag */
- X#define CH_FLAG_FNTPATH 'F' /* the -F command line flag */
- X#define CH_FLAG_INCPATH 'I' /* the -I command line flag */
- X#define CH_FLAG_INCLUDE 'i' /* the -i command line flag */
- X#define CH_FLAG_HYPHEN 'h' /* the -h command line flag */
- X#define CH_FLAG_VERSION 'V' /* the -V command line flag */
- X#define CH_FLAG_USAGE 'u' /* the -u command line flag */
- X#define CH_FLAG_DEBUG 'd' /* the -d command line flag */
- X
- X#define CH_SPACE ' ' /* space character */
- X#define CH_NEWLINE '\n' /* the newline character */
- X#define CH_SYMSTART '@' /* extra letter symbols may have */
- X#define CH_QUOTE '"' /* the quote character */
- X#define CH_ZERO '0' /* the first digit character, zero */
- X#define CH_INCGAP '+' /* begins an incrementing gap */
- X#define CH_DECGAP '-' /* begins a decrementing gap */
- X#define CH_MINUS '-' /* minus sign */
- X#define CH_HYPHEN '-' /* the hyphen character */
- X
- X#define CH_UNIT_CM 'c' /* unit of measurement: centimetres */
- X#define CH_UNIT_IN 'i' /* unit of measurement: inches */
- X#define CH_UNIT_PT 'p' /* unit of measurement: points */
- X#define CH_UNIT_EM 'm' /* unit of measurement: ems */
- X#define CH_UNIT_FT 'f' /* unit of measurement: fontsizes */
- X#define CH_UNIT_SP 's' /* unit of measurement: spacewidths */
- X#define CH_UNIT_VS 'v' /* unit of measurement: vspaces */
- X#define CH_UNIT_WD 'w' /* unit of measurement: follwidths */
- X#define CH_UNIT_BD 'b' /* unit of measurement: boundwidths */
- X#define CH_UNIT_RL 'r' /* unit of measurement: relwidths */
- X#define CH_UNIT_DG 'd' /* unit of measurement: degrees */
- X
- X#define CH_MODE_EDGE 'e' /* spacing mode: edge-to-edge */
- X#define CH_MODE_HYPH 'h' /* spacing mode: hyphenation */
- X#define CH_MODE_MARK 'x' /* spacing mode: mark-to-mark */
- X#define CH_MODE_OVER 'o' /* spacing mode: overstrike */
- X#define CH_MODE_KERN 'k' /* spacing mode: kerning */
- X#define CH_MODE_TABL 't' /* spacing mode: tabulation */
- X
- X#define octaldigit(ch) ( (ch) >= '0' && (ch) <= '7' )
- X#define decimaldigit(ch) ( (ch) >= '0' && (ch) <= '9' )
- X#define digitchartonum(ch) ( (ch) - '0' )
- X#define numtodigitchar(ch) ( (ch) + '0' )
- X#define beginsbreakstyle(ch) ( (ch) >= 'a' && (ch) <= 'z' )
- X#define numericchar(ch) ( decimaldigit(ch) || (ch) == '.' )
- X
- X
- X/*@::String literals, FULL_CHAR type@*****************************************/
- X/* */
- X/* String Literals. */
- X/* */
- X/* All significant string literals are defined here. The program has many */
- X/* others, however: format strings, debug output, etc. */
- X/* */
- X/*****************************************************************************/
- X
- X#define STR_EMPTY AsciiToFull("")
- X#define STR_QUOTE AsciiToFull("\"")
- X#define STR_ESCAPE AsciiToFull("\\")
- X#define STR_COMMENT AsciiToFull("#")
- X#define STR_SPACE AsciiToFull(" ")
- X#define STR_TAB AsciiToFull("\t")
- X#define STR_NEWLINE AsciiToFull("\n")
- X#define STR_LETTERS_LOWER AsciiToFull("abcdefghijklmnopqrstuvwxyz")
- X#define STR_LETTERS_UPPER AsciiToFull("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
- X#define STR_LETTERS_SYMSTART AsciiToFull("@")
- X
- X#if CHAR_IN==0
- X#define STR_LETTERS_EXTRA0 AsciiToFull("")
- X#define STR_LETTERS_EXTRA1 AsciiToFull("")
- X#define STR_LETTERS_EXTRA2 AsciiToFull("")
- X#define STR_LETTERS_EXTRA3 AsciiToFull("")
- X#define STR_LETTERS_EXTRA4 AsciiToFull("")
- X#define STR_LETTERS_EXTRA5 AsciiToFull("")
- X#define STR_LETTERS_EXTRA6 AsciiToFull("")
- X#define STR_LETTERS_EXTRA7 AsciiToFull("")
- X#else
- X#define STR_LETTERS_EXTRA0 AsciiToFull("\300\301\302\303\304\305\306\307")
- X#define STR_LETTERS_EXTRA1 AsciiToFull("\310\311\312\313\314\315\316\317")
- X#define STR_LETTERS_EXTRA2 AsciiToFull("\320\321\322\323\324\325\326")
- X#define STR_LETTERS_EXTRA3 AsciiToFull("\330\331\332\333\334\335\336\337")
- X#define STR_LETTERS_EXTRA4 AsciiToFull("\340\341\342\343\344\345\346\347")
- X#define STR_LETTERS_EXTRA5 AsciiToFull("\350\351\352\353\354\355\356\357")
- X#define STR_LETTERS_EXTRA6 AsciiToFull("\360\361\362\363\364\365\366")
- X#define STR_LETTERS_EXTRA7 AsciiToFull("\370\371\372\373\374\375\376\377")
- X#endif
- X
- X#define STR_STDIN AsciiToFull("-")
- X#define STR_STDOUT AsciiToFull("-")
- X#define STR_HYPHEN AsciiToFull("-")
- X#define STR_EPS AsciiToFull("EPS")
- X#define STR_ELSE AsciiToFull("else")
- X#define STR_NOCROSS AsciiToFull("??")
- X#define STR_BADKEY AsciiToFull("badkey")
- X#define STR_NONE AsciiToFull("none")
- X#define STR_ZERO AsciiToFull("0")
- X#define STR_PS_SPACENAME AsciiToFull("space")
- X#define STR_FONT_RECODE AsciiToFull("Recode")
- X#define STR_FONT_NORECODE AsciiToFull("NoRecode")
- X
- X#define STR_BREAK_HYPHEN AsciiToFull("hyphen")
- X#define STR_BREAK_NOHYPHEN AsciiToFull("nohyphen")
- X#define STR_BREAK_ADJUST AsciiToFull("adjust")
- X#define STR_BREAK_OUTDENT AsciiToFull("outdent")
- X#define STR_BREAK_RAGGED AsciiToFull("ragged")
- X#define STR_BREAK_CRAGGED AsciiToFull("cragged")
- X#define STR_BREAK_RRAGGED AsciiToFull("rragged")
- X#define STR_BREAK_LINES AsciiToFull("lines")
- X#define STR_BREAK_CLINES AsciiToFull("clines")
- X#define STR_BREAK_RLINES AsciiToFull("rlines")
- X
- X#define STR_GAP_RJUSTIFY AsciiToFull("1rt")
- X#define STR_GAP_ZERO_HYPH AsciiToFull("0ch")
- X
- X
- X/*@::GAP, STYLE@**************************************************************/
- X/* */
- X/* typedef GAP - what separates one object from another. */
- X/* */
- X/*****************************************************************************/
- X
- Xtypedef struct
- X{ unsigned char ospare; /* left for other things in STYLE */
- X BOOLEAN omark : 1; /* TRUE if this gap is marked */
- X BOOLEAN ojoin : 1; /* TRUE if joins exist across gap */
- X unsigned ounits : 3; /* units of measurement: fixed, etc */
- X unsigned omode : 3; /* spacing mode: edge-to-edge, etc */
- X LENGTH owidth; /* width of the gap */
- X} GAP;
- X
- X#define mark(x) (x).omark
- X#define join(x) (x).ojoin
- X#define units(x) (x).ounits
- X#define mode(x) (x).omode
- X#define width(x) (x).owidth
- X
- X#define SetGap(x, xmark, xjoin, xunits, xmode, xwidth) \
- X( mark(x) = xmark, join(x) = xjoin, units(x) = xunits, \
- X mode(x) = xmode, width(x) = xwidth \
- X)
- X
- X#define GapCopy(x, y) \
- X( mark(x) = mark(y), join(x) = join(y), units(x) = units(y), \
- X mode(x) = mode(y), width(x) = width(y) \
- X)
- X
- X#define ClearGap(x) SetGap(x, FALSE, TRUE, FIXED_UNIT, NO_MODE, 0)
- X
- X
- X/*****************************************************************************/
- X/* */
- X/* typedef STYLE - information about how to break text, etc. */
- X/* */
- X/*****************************************************************************/
- X
- Xtypedef struct
- X{ GAP oline_gap; /* separation between lines */
- X union {
- X GAP ospace_gap; /* separation indiced by white space */
- X struct {
- X unsigned ohyph_style : 2; /* hyphenation off or on */
- X unsigned ofill_style : 2; /* fill lines with text off/on */
- X unsigned odisplay_style : 3; /* display lines adjusted, ragged... */
- X } oss;
- X } osu;
- X} STYLE;
- X
- X#define line_gap(x) (x).oline_gap
- X#define space_gap(x) (x).osu.ospace_gap
- X#define font(x) (x).oline_gap.ospare
- X#define hyph_style(x) (x).osu.oss.ohyph_style
- X#define fill_style(x) (x).osu.oss.ofill_style
- X#define display_style(x)(x).osu.oss.odisplay_style
- X
- X#define StyleCopy(x, y) \
- X( GapCopy( line_gap(x), line_gap(y) ), \
- X font(x) = font(y), \
- X hyph_style(x) = hyph_style(y), \
- X fill_style(x) = fill_style(y), \
- X display_style(x) = display_style(y), \
- X GapCopy( space_gap(x), space_gap(y) ) \
- X)
- X
- X
- X/*@::CONSTRAINT, FILE_NUM, FILE_POS, LIST@************************************/
- X/* */
- X/* typedef CONSTRAINT - a size constraint. */
- X/* */
- X/*****************************************************************************/
- X
- Xtypedef struct
- X{ LENGTH obc;
- X LENGTH obfc;
- X LENGTH ofc;
- X LENGTH osparec;
- X} CONSTRAINT;
- X
- X#define bc(x) (x).obc
- X#define bfc(x) (x).obfc
- X#define fc(x) (x).ofc
- X#define sparec(x) (x).osparec
- X#define constrained(x) (bc(x)!=MAX_LEN || bfc(x)!=MAX_LEN || fc(x)!=MAX_LEN)
- X
- X#define SetConstraint(c,x,y,z) (bc(c) = (x), bfc(c) = (y), fc(c) = (z))
- X#define CopyConstraint(x, y) (bc(x) = bc(y), bfc(x) = bfc(y), fc(x) = fc(y))
- X#define FitsConstraint(b, f, c) (b <= bc(c) && b + f <= bfc(c) && f <= fc(c))
- X
- X#define ig_fnum(x) bc(constraint(x))
- X#define ig_xtrans(x) bfc(constraint(x))
- X#define ig_ytrans(x) fc(constraint(x))
- X
- X
- X/*****************************************************************************/
- X/* */
- X/* typedef FILE_NUM - the internal representation of a file. */
- X/* */
- X/*****************************************************************************/
- X
- Xtypedef unsigned char FILE_NUM;
- X#define NO_FILE 0
- X
- X
- X/*****************************************************************************/
- X/* */
- X/* typedef FILE_POS - a position in the set of input files. */
- X/* */
- X/*****************************************************************************/
- X
- Xtypedef struct
- X{ FILE_NUM ofile_num; /* no. of file this record is from */
- X unsigned char ocol_num; /* column number this is related to */
- X LENGTH oline_num; /* the line number of this record */
- X} FILE_POS;
- X
- X#define file_num(x) (x).ofile_num
- X#define col_num(x) (x).ocol_num
- X#define line_num(x) (x).oline_num
- X
- X#define FposCopy(x, y) \
- X( file_num(x) = file_num(y), \
- X line_num(x) = line_num(y), \
- X col_num(x) = col_num(y) \
- X)
- X
- X
- X/*****************************************************************************/
- X/* */
- X/* typedef LIST - two pointers used to make one doubly linked list */
- X/* */
- X/*****************************************************************************/
- X
- Xtypedef struct { union rec *opred, *osucc; } LIST;
- X
- X
- X/*@::FIRST_UNION@*************************************************************/
- X/* */
- X/* typedef FIRST_UNION - first four bytes of object record (after 2 LISTs). */
- X/* */
- X/*****************************************************************************/
- X
- Xtypedef union
- X{
- X struct /* used by WORD and QWORD when they are tokens */
- X { unsigned char otype, orec_size;
- X unsigned char ohspace, ovspace;
- X } os11;
- X
- X struct /* used by all non-WORD tokens, including CLOSURE and GAP_OBJ */
- X { unsigned char otype, oprecedence;
- X unsigned char ohspace, ovspace;
- X } os12;
- X
- X struct /* used by WORD and QWORD when they are objects */
- X { unsigned char otype, orec_size;
- X BOOLEAN ogall_rec : 1;
- X BOOLEAN obroken : 1;
- X BOOLEAN othreaded : 1;
- X BOOLEAN oexternal : 1;
- X BOOLEAN oblocked : 1;
- X BOOLEAN obackward : 1;
- X BOOLEAN otrigger_ext : 1;
- X BOOLEAN omust_expand : 1;
- X FONT_NUM oword_font;
- X } os13;
- X
- X struct /* used by all non-WORD objects, including CLOSURE */
- X { unsigned char otype, ospare;
- X BOOLEAN ogall_rec : 1;
- X BOOLEAN obroken : 1;
- X BOOLEAN othreaded : 1;
- X BOOLEAN oexternal : 1;
- X BOOLEAN oblocked : 1;
- X BOOLEAN obackward : 1;
- X BOOLEAN otrigger_ext : 1;
- X BOOLEAN omust_expand : 1;
- X unsigned char ocross_type; /* CROSS objects only */
- X } os14;
- X
- X struct /* used by WORD and QWORD when they are database nodes */
- X { unsigned char otype, orec_size;
- X unsigned oreading : 1;
- X unsigned oleft_pos : 15;
- X } os15;
- X
- X struct /* used by WORD and QWORD when they are font records */
- X { unsigned char otype, orec_size;
- X FONT_NUM ofont_num;
- X BOOLEAN ofont_recoded: 1;
- X } os16;
- X
- X struct /* used by symbol table entries */
- X { unsigned char otype, oprecedence;
- X BOOLEAN ois_tag : 1;
- X BOOLEAN ohas_tag : 1;
- X BOOLEAN ohas_lpar : 1;
- X BOOLEAN ohas_rpar : 1;
- X BOOLEAN oright_assoc : 1;
- X BOOLEAN ois_target : 1;
- X BOOLEAN ohas_target : 1;
- X BOOLEAN oforce_target : 1;
- X BOOLEAN ohas_body : 1;
- X BOOLEAN oindefinite : 1;
- X BOOLEAN orecursive : 1;
- X BOOLEAN ouses_extern_target : 1;
- X BOOLEAN ois_extern_target : 1;
- X BOOLEAN ois_key : 1;
- X BOOLEAN ohas_key : 1;
- X BOOLEAN odirty : 1;
- X } os17;
- X
- X} FIRST_UNION;
- X
- X/*@::SECOND_UNION, THIRD_UNION, FOURTH_UNION@*********************************/
- X/* */
- X/* typedef SECOND_UNION - four bytes usually holding a file position. */
- X/* */
- X/* The fpos is overwritten in WORDs and QWORDs during FixAndPrintObject by */
- X/* the horizontal coordinate of the word, which has to be remembered. */
- X/* */
- X/*****************************************************************************/
- X
- Xtypedef union
- X{
- X FILE_POS ofpos;
- X int oword_save_mark;
- X
- X} SECOND_UNION;
- X
- X
- X/*****************************************************************************/
- X/* */
- X/* typedef THIRD_UNION - eight bytes usually holding an object size. */
- X/* */
- X/* In database records this space is used for a file pointer; in certain */
- X/* WORD objects used privately in z10.c it is used for a galley-position. */
- X/* In font records it holds the font size, space width, etc. */
- X/* */
- X/*****************************************************************************/
- X
- Xtypedef union
- X{
- X struct
- X { LENGTH oback[2];
- X LENGTH ofwd[2];
- X } os31;
- X
- X FILE *ofilep;
- X int ogall_pos;
- X
- X struct
- X { LENGTH ofont_size;
- X LENGTH ofont_xheight2;
- X LENGTH ofont_spacewidth;
- X ENCODING ofont_encoding;
- X } os32;
- X
- X} THIRD_UNION;
- X
- X
- X/*****************************************************************************/
- X/* */
- X/* typedef FOURTH_UNION - eight bytes holding a STYLE or CONSTRAINT. */
- X/* */
- X/*****************************************************************************/
- X
- Xtypedef union
- X{
- X STYLE osave_style;
- X CONSTRAINT oconstraint;
- X
- X} FOURTH_UNION;
- X
- X
- X/*@::OBJECT@******************************************************************/
- X/* */
- X/* typedef OBJECT - the general-purpose record used throughout Lout. */
- X/* */
- X/*****************************************************************************/
- X
- Xtypedef union rec
- X{
- X struct word_type /* all fields of WORD and QWORD, token and object */
- X { LIST olist[2];
- X FIRST_UNION ou1;
- X SECOND_UNION ou2;
- X THIRD_UNION ou3;
- X FULL_CHAR ostring[4];
- X } os1;
- X
- X struct closure_type /* all fields of CLOSURE, both as token and object */
- X { LIST olist[2];
- X FIRST_UNION ou1;
- X SECOND_UNION ou2;
- X THIRD_UNION ou3;
- X FOURTH_UNION ou4;
- X union rec *oactual;
- X union
- X { union rec *owhereto;
- X LENGTH osave_mark;
- X } oux;
- X union rec *oready_galls;
- X } os2;
- X
- X struct object_type /* the general OBJECT */
- X { LIST olist[2];
- X FIRST_UNION ou1;
- X SECOND_UNION ou2;
- X THIRD_UNION ou3;
- X FOURTH_UNION ou4;
- X } os3;
- X
- X struct link_type /* LINK */
- X { LIST olist[2];
- X unsigned char otype;
- X unsigned char onumber;
- X unsigned char odb_targ;
- X } os4;
- X
- X struct gapobj_type /* GAP_OBJ */
- X { LIST olist[2];
- X FIRST_UNION ou1;
- X SECOND_UNION ou2;
- X GAP ogap;
- X int osave_badness; /* optimum paragraph breaker */
- X LENGTH osave_space; /* optimum paragraph breaker */
- X LENGTH osave_actual_gap; /* optimum paragraph breaker */
- X union rec *osave_prev; /* optimum paragraph breaker */
- X } os5;
- X
- X struct symbol_type
- X { LIST olist[2];
- X FIRST_UNION ou1;
- X SECOND_UNION ou2;
- X union rec *oenclosing;
- X union rec *osym_body;
- X union rec *obase_uses;
- X union rec *ouses;
- X union rec *omarker;
- X union rec *ocross_sym;
- X union rec *oimports;
- X short unsigned opredefined;
- X unsigned char ouses_count;
- X BOOLEAN ovisible : 1;
- X BOOLEAN ohas_mark : 1;
- X BOOLEAN ohas_join : 1;
- X BOOLEAN ohas_par : 1;
- X BOOLEAN ouses_galley : 1;
- X } os6;
- X
- X struct cr_type
- X { LIST olist[2];
- X unsigned char otype;
- X unsigned char otarget_state;
- X FILE_NUM otarget_file;
- X FILE_NUM ocr_file;
- X union rec *otarget_val;
- X int otarget_seq;
- X int otarget_pos;
- X int ocr_seq;
- X int ogall_seq;
- X union rec *osymb;
- X union rec *ogall_tag;
- X FILE_NUM ogall_tfile;
- X FILE_NUM ogentag_file;
- X int ogentag_seq;
- X union rec *ogentag_fseq;
- X } os7;
- X
- X struct ext_gall_type
- X { LIST olist[2];
- X unsigned char otype;
- X FILE_NUM oeg_fnum;
- X long oeg_fpos;
- X long oeg_cont;
- X union rec *oeg_symbol;
- X } os8;
- X
- X struct uses_type
- X { union rec *oitem;
- X union rec *onext;
- X } os9;
- X
- X struct hash_entry_type
- X { LIST olist[1];
- X } os10;
- X
- X} *OBJECT;
- X
- X
- X/*@::macros for fields of OBJECT@*********************************************/
- X/* */
- X/* Macros for fields of OBJECT. */
- X/* */
- X/*****************************************************************************/
- X
- X#define succ(x, dim) (x)->os1.olist[dim].osucc
- X#define pred(x, dim) (x)->os1.olist[dim].opred
- X
- X#define type(x) (x)->os1.ou1.os11.otype
- X#define rec_size(x) (x)->os1.ou1.os11.orec_size
- X#define hspace(x) (x)->os1.ou1.os11.ohspace
- X#define vspace(x) (x)->os1.ou1.os11.ovspace
- X#define precedence(x) (x)->os2.ou1.os12.oprecedence
- X
- X#define gall_rec(x) (x)->os1.ou1.os13.ogall_rec
- X#define non_blocking(x) gall_rec(x)
- X#define broken(x) (x)->os1.ou1.os13.obroken
- X#define sized(x) broken(x)
- X#define threaded(x) (x)->os1.ou1.os13.othreaded
- X#define external(x) (x)->os1.ou1.os13.oexternal
- X#define blocked(x) (x)->os1.ou1.os13.oblocked
- X#define seen_nojoin(x) blocked(x)
- X#define backward(x) (x)->os1.ou1.os13.obackward
- X#define trigger_externs(x) (x)->os1.ou1.os13.otrigger_ext
- X#define must_expand(x) (x)->os1.ou1.os13.omust_expand
- X#define word_font(x) (x)->os1.ou1.os13.oword_font
- X#define cross_type(x) (x)->os1.ou1.os14.ocross_type
- X#define thr_state(x) cross_type(x)
- X
- X#define reading(x) (x)->os1.ou1.os15.oreading
- X#define left_pos(x) (x)->os1.ou1.os15.oleft_pos
- X
- X#define has_lpar(x) (x)->os1.ou1.os17.ohas_lpar
- X#define has_rpar(x) (x)->os1.ou1.os17.ohas_rpar
- X#define right_assoc(x) (x)->os1.ou1.os17.oright_assoc
- X#define is_target(x) (x)->os1.ou1.os17.ois_target
- X#define has_target(x) (x)->os1.ou1.os17.ohas_target
- X#define force_target(x) (x)->os1.ou1.os17.oforce_target
- X#define is_tag(x) (x)->os1.ou1.os17.ois_tag
- X#define has_tag(x) (x)->os1.ou1.os17.ohas_tag
- X#define has_body(x) (x)->os1.ou1.os17.ohas_body
- X#define indefinite(x) (x)->os1.ou1.os17.oindefinite
- X#define recursive(x) (x)->os1.ou1.os17.orecursive
- X#define uses_extern_target(x) (x)->os1.ou1.os17.ouses_extern_target
- X#define is_extern_target(x) (x)->os1.ou1.os17.ois_extern_target
- X#define is_key(x) (x)->os1.ou1.os17.ois_key
- X#define has_key(x) (x)->os1.ou1.os17.ohas_key
- X#define dirty(x) (x)->os1.ou1.os17.odirty
- X
- X#define fpos(x) (x)->os1.ou2.ofpos
- X#define word_save_mark(x) (x)->os1.ou2.oword_save_mark
- X
- X#define back(x, dim) (x)->os1.ou3.os31.oback[dim]
- X#define fwd(x, dim) (x)->os1.ou3.os31.ofwd[dim]
- X#define size(x, dim) (back(x, dim) + fwd(x, dim))
- X#define filep(x) (x)->os1.ou3.ofilep
- X#define gall_pos(x) (x)->os1.ou3.ogall_pos
- X
- X#define string(x) (x)->os1.ostring
- X
- X#define save_style(x) (x)->os2.ou4.osave_style
- X#define constraint(x) (x)->os2.ou4.oconstraint
- X
- X#define actual(x) (x)->os2.oactual
- X#define whereto(x) (x)->os2.oux.owhereto
- X#define save_mark(x) (x)->os2.oux.osave_mark
- X#define ready_galls(x) (x)->os2.oready_galls
- X
- X#define number(x) (x)->os4.onumber
- X#define db_targ(x) (x)->os4.odb_targ
- X
- X#define gap(x) (x)->os5.ogap
- X#define save_badness(x) (x)->os5.osave_badness
- X#define save_space(x) (x)->os5.osave_space
- X#define save_actual_gap(x) (x)->os5.osave_actual_gap
- X#define save_prev(x) (x)->os5.osave_prev
- X
- X#define enclosing(x) (x)->os6.oenclosing
- X#define sym_body(x) (x)->os6.osym_body
- X#define base_uses(x) (x)->os6.obase_uses
- X#define uses(x) (x)->os6.ouses
- X#define marker(x) (x)->os6.omarker
- X#define cross_sym(x) (x)->os6.ocross_sym
- X#define imports(x) (x)->os6.oimports
- X#define predefined(x) (x)->os6.opredefined
- X#define uses_count(x) (x)->os6.ouses_count
- X#define visible(x) (x)->os6.ovisible
- X#define has_mark(x) (x)->os6.ohas_mark
- X#define has_join(x) (x)->os6.ohas_join
- X#define has_par(x) (x)->os6.ohas_par
- X#define uses_galley(x) (x)->os6.ouses_galley
- X
- X#define target_state(x) (x)->os7.otarget_state
- X#define target_file(x) (x)->os7.otarget_file
- X#define cr_file(x) (x)->os7.ocr_file
- X#define target_val(x) (x)->os7.otarget_val
- X#define target_seq(x) (x)->os7.otarget_seq
- X#define target_pos(x) (x)->os7.otarget_pos
- X#define cr_seq(x) (x)->os7.ocr_seq
- X#define gall_seq(x) (x)->os7.ogall_seq
- X#define symb(x) (x)->os7.osymb
- X#define gall_tag(x) (x)->os7.ogall_tag
- X#define gall_tfile(x) (x)->os7.ogall_tfile
- X#define gentag_file(x) (x)->os7.ogentag_file
- X#define gentag_seq(x) (x)->os7.ogentag_seq
- X#define gentag_fseq(x) (x)->os7.ogentag_fseq
- X
- X#define eg_fnum(x) (x)->os8.oeg_fnum
- X#define eg_fpos(x) (x)->os8.oeg_fpos
- X#define eg_cont(x) (x)->os8.oeg_cont
- X#define eg_symbol(x) (x)->os8.oeg_symbol
- X
- X#define item(x) (x)->os9.oitem
- X#define next(x) (x)->os9.onext
- X
- X#define font_num(x) (x)->os1.ou1.os16.ofont_num
- X#define font_recoded(x) (x)->os1.ou1.os16.ofont_recoded
- X#define font_size(x) (x)->os1.ou3.os32.ofont_size
- X#define font_xheight2(x) (x)->os1.ou3.os32.ofont_xheight2
- X#define font_spacewidth(x) (x)->os1.ou3.os32.ofont_spacewidth
- X#define font_encoding(x) (x)->os1.ou3.os32.ofont_encoding
- X
- X
- X/*@::object types@************************************************************/
- X/* */
- X/* OBJECT, TOKEN AND OTHER TYPES inhabiting type(x) and predefined(x) */
- X/* */
- X/* Key letters in the adjacent comment indicate where the tag is legal: */
- X/* */
- X/* t a token type, pushed on token stack */
- X/* o an object type (returned by reduce(), inserted by Manifest) */
- X/* i an index type (a child of a galley header other than an object) */
- X/* s a predefined symbol (some symbol table entry has this predefined()) */
- X/* n an indefinite object i.e. one which is ignored in catenation ops */
- X/* */
- X/*****************************************************************************/
- X
- X#define LINK 0 /* a link between objects */
- X#define GAP_OBJ 1 /* o a gap object */
- X#define CLOSURE 2 /* to n a closure of a symbol */
- X#define NULL_CLOS 3 /* to sn @Null */
- X#define CROSS 4 /* to sn && (a cross reference obj) */
- X#define HEAD 5 /* o n a galley header */
- X#define SPLIT 6 /* o @Split */
- X#define PAR 7 /* o a parameter of a closure */
- X#define WORD 8 /* o a word */
- X#define QWORD 9 /* o a word (was quoted in i/p) */
- X#define ROW_THR 10 /* o a row thread */
- X#define COL_THR 11 /* o a column thread */
- X#define ACAT 12 /* to s a sequence of &-ed objs */
- X#define HCAT 13 /* to s a sequence of |-ed objs */
- X#define VCAT 14 /* to s a sequence of /-ed objs */
- X#define ONE_COL 15 /* to s @OneCol */
- X#define ONE_ROW 16 /* to s @OneRow */
- X#define WIDE 17 /* to s @Wide */
- X#define HIGH 18 /* to s @High */
- X#define HSCALE 19 /* to s @HScale */
- X#define VSCALE 20 /* to s @HScale */
- X#define SCALE 21 /* to s @Scale */
- X#define HCONTRACT 22 /* to s @HContract */
- X#define VCONTRACT 23 /* to s @VContract */
- X#define HEXPAND 24 /* to s @HExpand */
- X#define VEXPAND 25 /* to s @VExpand */
- X#define PADJUST 26 /* to s @PAdjust */
- X#define HADJUST 27 /* to s @HAdjust */
- X#define VADJUST 28 /* to s @VAdjust */
- X#define ROTATE 29 /* to s @Rotate */
- X#define CASE 30 /* to s @Case */
- X#define YIELD 31 /* to s @Yield */
- X#define XCHAR 32 /* to s @Char */
- X#define FONT 33 /* to s @Font */
- X#define SPACE 34 /* to s @Space */
- X#define BREAK 35 /* to s @Break */
- X#define NEXT 36 /* to s @Next */
- X#define ENV 37 /* to s @LEnv */
- X#define CLOS 38 /* to s @LClos */
- X#define LVIS 39 /* to s @LVis */
- X#define OPEN 40 /* to s @Open */
- X#define TAGGED 41 /* to s @Tagged */
- X#define INCGRAPHIC 42 /* to s @IncludeGraphic */
- X#define SINCGRAPHIC 43 /* to s @SysIncludeGraphic */
- X#define GRAPHIC 44 /* to s @Graphic */
- X
- X#define TSPACE 45 /* t a space token, parser only */
- X#define TJUXTA 46 /* t a juxta token, parser only */
- X#define LBR 47 /* t s left brace token */
- X#define RBR 48 /* t s right brace token */
- X#define BEGIN 49 /* t s @Begin token */
- X#define END 50 /* t s @End token */
- X#define USE 51 /* t s @Use */
- X#define GSTUB_NONE 52 /* t a galley stub, no rpar */
- X#define GSTUB_INT 53 /* t galley stub internal rpar */
- X#define GSTUB_EXT 54 /* t galley stub external rpar */
- X#define INCLUDE 55 /* s @Include */
- X#define SYS_INCLUDE 56 /* s @SysInclude */
- X#define PREPEND 57 /* s @Prepend */
- X#define SYS_PREPEND 58 /* s @SysPrepend */
- X#define DATABASE 59 /* s @Database */
- X#define SYS_DATABASE 60 /* s @SysDatabase */
- X#define START 61 /* s \Start */
- X
- X#define DEAD 63 /* i a dead galley */
- X#define UNATTACHED 64 /* i an inner, unsized galley */
- X#define RECEPTIVE 65 /* i a receptive object index */
- X#define RECEIVING 66 /* i a receiving object index */
- X#define RECURSIVE 67 /* i a recursive definite obj. */
- X#define PRECEDES 68 /* i an ordering constraint */
- X#define FOLLOWS 69 /* i other end of ordering c. */
- X#define CROSS_FOLL 70 /* i following type cross-ref */
- X#define GALL_FOLL 71 /* i galley with &&following */
- X#define CROSS_TARG 72 /* i value of cross-ref */
- X#define GALL_TARG 73 /* i target of these galleys */
- X#define GALL_PREC 74 /* i galley with &&preceding */
- X#define CROSS_PREC 75 /* i preceding type cross-ref */
- X#define EXPAND_IND 76 /* i index of HEXPAND or VEXPD */
- X#define THREAD 77 /* a sequence of threads */
- X#define CROSS_SYM 78 /* cross-ref info */
- X#define CR_ROOT 79 /* RootCross */
- X#define MACRO 80 /* a macro symbol */
- X#define LOCAL 81 /* a local symbol */
- X#define LPAR 82 /* a left parameter */
- X#define NPAR 83 /* a named parameter */
- X#define RPAR 84 /* a right parameter */
- X#define EXT_GALL 85 /* an external galley */
- X#define CR_LIST 86 /* a list of cross references */
- X#define DISPOSED 87 /* a disposed record */
- X
- X#define is_indefinite(x) ((x) >= CLOSURE && (x) <= HEAD)
- X#define is_definite(x) ((x) >= SPLIT && (x) <= GRAPHIC)
- X#define is_par(x) ((x) >= LPAR && (x) <= RPAR)
- X#define is_index(x) ((x) >= DEAD && (x) <= EXPAND_IND)
- X#define is_type(x) ((x) >= LINK && (x) < DISPOSED)
- X#define is_word(x) ((x) == WORD || (x) == QWORD)
- X#define is_cat_op(x) (((x)>=ACAT && (x)<=VCAT) || (x)==TSPACE || (x)<=TJUXTA)
- X
- X
- X/*@::miscellaneous constants@*************************************************/
- X/* */
- X/* Miscellaneous globally defined constants */
- X/* */
- X/*****************************************************************************/
- X
- X/* gap modes occupying mode(x) */
- X#define NO_MODE 0 /* for error detection: no mode */
- X#define EDGE_MODE 1 /* edge-to-edge spacing */
- X#define HYPH_MODE 2 /* edge-to-edge with hyphenation */
- X#define MARK_MODE 3 /* mark-to-mark spacing */
- X#define OVER_MODE 4 /* overstrike spacing */
- X#define KERN_MODE 5 /* kerning spacing */
- X#define TAB_MODE 6 /* tabulation spacing */
- X#define ADD_HYPH 7 /* temp value used by FillObject */
- X
- X/* hyph_style(style) options */
- X#define HYPH_UNDEF 0 /* hyphenation option undefined */
- X#define HYPH_OFF 1 /* hyphenation off */
- X#define HYPH_ON 2 /* hyphenation on */
- X
- X/* fill_style(style) options */
- X#define FILL_UNDEF 0 /* fill option undefined */
- X#define FILL_OFF 1 /* no filling of lines */
- X#define FILL_ON 2 /* fill lines with text */
- X
- X/* display_style(style) options */
- X#define DISPLAY_UNDEF 0 /* display option undefined */
- X#define DISPLAY_ADJUST 1 /* adjust lines (except last) */
- X#define DISPLAY_OUTDENT 2 /* outdent lines (except first) */
- X#define DISPLAY_LEFT 3 /* left-justify lines, no adjust */
- X#define DISPLAY_CENTRE 4 /* centre lines, no adjust */
- X#define DISPLAY_RIGHT 5 /* right-justify lines, no adjust */
- END_OF_FILE
- if test 46198 -ne `wc -c <'externs.A'`; then
- echo shar: \"'externs.A'\" unpacked with wrong size!
- elif test -f 'externs.B' ; then
- echo shar: Combining \"'externs'\" \(96127 characters\)
- cat 'externs.A' 'externs.B' > 'externs'
- if test 96127 -ne `wc -c <'externs'`; then
- echo shar: \"'externs'\" combined with wrong size!
- else
- rm externs.A externs.B
- fi
- fi
- # end of 'externs.A'
- fi
- if test -f 'include/tab' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'include/tab'\"
- else
- echo shar: Extracting \"'include/tab'\" \(25206 characters\)
- sed "s/^X//" >'include/tab' <<'END_OF_FILE'
- X
- X###############################################################################
- X# #
- X# Lout @Tab package for formatting tables (Version 2.0) #
- X# #
- X# Version 1.0 by Jeffrey H. Kingston, September 1991. #
- X# Version 2.0 by Jeffrey H. Kingston, 22 December 1992. #
- X# #
- X# See "Tab - A Lout package for formatting tables" for user information. #
- X# #
- X###############################################################################
- X
- X@SysPrependGraphic { tab_prepend }
- X
- Xexport @CC @RR @Rule @DoubleRule @Line @DoubleLine @NP
- X @Rowa @Rowb @Rowc @Rowd @Rowe @Rowf @Rowg @Rowh @Rowi @Rowj
- X @MarkRowa @MarkRowb @MarkRowc @MarkRowd @MarkRowe @MarkRowf
- X @MarkRowg @MarkRowh @MarkRowi @MarkRowj
- X
- Xdef @Tab
- X
- X named above { no }
- X named below { no }
- X named between { no }
- X named side { no }
- X named hmargin { 0.3c }
- X named vmargin { 0.2v }
- X named linewidth { 0.5 pt }
- X
- X named @Fmta
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named "!" precedence 10 left x named between { dft } right y {}
- X named "!!" precedence 10 left x right y {}
- X named "!!!" precedence 10 left x right y {}
- X named "@Over" precedence 11 left x right y { x // y }
- X named "," precedence 12 left x right y {}
- X named @Col precedence 12 right x {}
- X named @CC right x { clines @Break { & x } }
- X named @RR right x { rlines @Break { & x } }
- X {}
- X
- X named @Fmtb
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named "!" precedence 10 left x named between { dft } right y {}
- X named "!!" precedence 10 left x right y {}
- X named "!!!" precedence 10 left x right y {}
- X named "@Over" precedence 11 left x right y { x // y }
- X named "," precedence 12 left x right y {}
- X named @Col precedence 12 right x {}
- X named @CC right x { clines @Break { & x } }
- X named @RR right x { rlines @Break { & x } }
- X {}
- X
- X named @Fmtc
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named "!" precedence 10 left x named between { dft } right y {}
- X named "!!" precedence 10 left x right y {}
- X named "!!!" precedence 10 left x right y {}
- X named "@Over" precedence 11 left x right y { x // y }
- X named "," precedence 12 left x right y {}
- X named @Col precedence 12 right x {}
- X named @CC right x { clines @Break { & x } }
- X named @RR right x { rlines @Break { & x } }
- X {}
- X
- X named @Fmtd
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named "!" precedence 10 left x named between { dft } right y {}
- X named "!!" precedence 10 left x right y {}
- X named "!!!" precedence 10 left x right y {}
- X named "@Over" precedence 11 left x right y { x // y }
- X named "," precedence 12 left x right y {}
- X named @Col precedence 12 right x {}
- X named @CC right x { clines @Break { & x } }
- X named @RR right x { rlines @Break { & x } }
- X {}
- X
- X named @Fmte
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named "!" precedence 10 left x named between { dft } right y {}
- X named "!!" precedence 10 left x right y {}
- X named "!!!" precedence 10 left x right y {}
- X named "@Over" precedence 11 left x right y { x // y }
- X named "," precedence 12 left x right y {}
- X named @Col precedence 12 right x {}
- X named @CC right x { clines @Break { & x } }
- X named @RR right x { rlines @Break { & x } }
- X {}
- X
- X named @Fmtf
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named "!" precedence 10 left x named between { dft } right y {}
- X named "!!" precedence 10 left x right y {}
- X named "!!!" precedence 10 left x right y {}
- X named "@Over" precedence 11 left x right y { x // y }
- X named "," precedence 12 left x right y {}
- X named @Col precedence 12 right x {}
- X named @CC right x { clines @Break { & x } }
- X named @RR right x { rlines @Break { & x } }
- X {}
- X
- X named @Fmtg
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named "!" precedence 10 left x named between { dft } right y {}
- X named "!!" precedence 10 left x right y {}
- X named "!!!" precedence 10 left x right y {}
- X named "@Over" precedence 11 left x right y { x // y }
- X named "," precedence 12 left x right y {}
- X named @Col precedence 12 right x {}
- X named @CC right x { clines @Break { & x } }
- X named @RR right x { rlines @Break { & x } }
- X {}
- X
- X named @Fmth
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named "!" precedence 10 left x named between { dft } right y {}
- X named "!!" precedence 10 left x right y {}
- X named "!!!" precedence 10 left x right y {}
- X named "@Over" precedence 11 left x right y { x // y }
- X named "," precedence 12 left x right y {}
- X named @Col precedence 12 right x {}
- X named @CC right x { clines @Break { & x } }
- X named @RR right x { rlines @Break { & x } }
- X {}
- X
- X named @Fmti
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named "!" precedence 10 left x named between { dft } right y {}
- X named "!!" precedence 10 left x right y {}
- X named "!!!" precedence 10 left x right y {}
- X named "@Over" precedence 11 left x right y { x // y }
- X named "," precedence 12 left x right y {}
- X named @Col precedence 12 right x {}
- X named @CC right x { clines @Break { & x } }
- X named @RR right x { rlines @Break { & x } }
- X {}
- X
- X named @Fmtj
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named "!" precedence 10 left x named between { dft } right y {}
- X named "!!" precedence 10 left x right y {}
- X named "!!!" precedence 10 left x right y {}
- X named "@Over" precedence 11 left x right y { x // y }
- X named "," precedence 12 left x right y {}
- X named @Col precedence 12 right x {}
- X named @CC right x { clines @Break { & x } }
- X named @RR right x { rlines @Break { & x } }
- X {}
- X
- X body @Body
- X
- X@Begin
- X
- X macro @NP { /1.1b }
- X
- X def @CC right x { clines @Break { & x } }
- X def @RR right x { rlines @Break { & x } }
- X
- X def @HSingle { linewidth ltabhs }
- X def @HSingleProject { linewidth ltabhsp }
- X def @HDouble { linewidth ltabhd }
- X def @HDoubleBelow { linewidth ltabhdb }
- X def @HDoubleNW { linewidth ltabhdnw }
- X def @HDoubleNE { linewidth ltabhdne }
- X def @HDoubleSW { linewidth ltabhdsw }
- X def @HDoubleSE { linewidth ltabhdse }
- X def @VSingle { linewidth ltabvs }
- X def @VDouble { linewidth ltabvd }
- X def @VDoubleRight { linewidth ltabvdr }
- X
- X def @MidHRule
- X left rule
- X right x
- X {
- X rule @Case
- X {
- X no @Yield { @OneCol x }
- X { yes single } @Yield { @HSingle @Graphic x }
- X { double doubleboxabove } @Yield { @HDouble @Graphic x }
- X doubleboxbelow @Yield { @HDoubleBelow @Graphic x }
- X }
- X }
- X
- X def @LeftHRule
- X left rule
- X right x
- X {
- X rule @Case
- X {
- X no @Yield { @OneCol x }
- X { yes single } @Yield { @HSingleProject @Graphic x }
- X double @Yield { @HDouble @Graphic x }
- X doubleboxabove @Yield { @HDoubleNW @Graphic x }
- X doubleboxbelow @Yield { @HDoubleSW @Graphic x }
- X }
- X }
- X
- X def @RightHRule
- X left rule
- X right x
- X {
- X rule @Case
- X {
- X no @Yield { @OneCol x }
- X { yes single } @Yield { @HSingleProject @Graphic x }
- X double @Yield { @HDouble @Graphic x }
- X doubleboxabove @Yield { @HDoubleNE @Graphic x }
- X doubleboxbelow @Yield { @HDoubleSE @Graphic x }
- X }
- X }
- X
- X def @HSRule
- X left rule
- X {
- X rule @Case
- X {
- X no @Yield {}
- X { yes single } @Yield { @HSingle @Graphic {} }
- X double @Yield { @HDouble @Graphic {} }
- X doubleboxabove @Yield { @HDouble @Graphic {} }
- X doubleboxbelow @Yield { @HDoubleBelow @Graphic {} }
- X }
- X }
- X
- X def @ZeroWidth
- X right x
- X { @OneCol { |0io x |0io }
- X }
- X
- X def @Line
- X { single @HSRule
- X }
- X
- X def @DoubleLine
- X { double @HSRule
- X }
- X
- X def @Rule
- X {
- X @OneRow
- X {
- X @ZeroWidth @HSingle @Graphic { ^|hmargin }
- X / @Line /
- X &1rt @ZeroWidth @HSingle @Graphic { |hmargin }
- X }
- X }
- X
- X def @DoubleRule
- X {
- X @OneRow
- X {
- X @ZeroWidth @HDouble @Graphic { ^|hmargin }
- X / @DoubleLine /
- X &1rt @ZeroWidth @HDouble @Graphic { |hmargin }
- X }
- X }
- X
- X def @VRule
- X left rule
- X right x
- X {
- X rule @Case
- X {
- X no @Yield {}
- X { yes single } @Yield @OneRow { /0io @VSingle @Graphic x /0io }
- X double @Yield @OneRow { /0io @VDouble @Graphic x /0io }
- X }
- X }
- X
- X def @VRuleRight
- X left rule
- X right x
- X {
- X rule @Case
- X {
- X no @Yield {}
- X {yes single} @Yield @OneRow { /0io @VSingle @Graphic x /0io }
- X double @Yield @OneRow { /0io @VDoubleRight @Graphic x /0io }
- X }
- X }
- X
- X def @VSRule
- X left rule
- X {
- X rule @Case
- X {
- X no @Yield {}
- X { yes single } @Yield { @VSingle @Graphic {} }
- X double @Yield { @VDouble @Graphic {} }
- X }
- X }
- X
- X def @VSRuleRight
- X left rule
- X {
- X rule @Case
- X {
- X no @Yield {}
- X {yes single} @Yield { @VSingle @Graphic {} }
- X double @Yield { @VDoubleRight @Graphic {} }
- X }
- X }
- X
- X def @Wrap
- X named ur { no } # Rule up above entry
- X named dr { no } # Rule down below entry
- X named vm { vmargin } # Vertical margin
- X right x # The object to be wrapped
- X {
- X ur @HSRule
- X ^/vm @OneCol @OneRow x
- X /vm dr @HSRule
- X }
- X
- X def @Sep
- X left x
- X named ur { no } # Rule up above entry
- X named dr { no } # Rule down below entry
- X named sr { no } # Rule separating x from y
- X named hm { hmargin } # Horizontal margin
- X named vm { vmargin } # Vertical margin
- X right y
- X {
- X def vr
- X {
- X sr @Case
- X { dft @Yield between
- X else @Yield sr
- X }
- X }
- X
- X x | @OneCol
- X { ur @MidHRule {|hm}
- X /vm
- X /vm dr @MidHRule {|hm}
- X }
- X | @OneCol
- X { vr @VRule { /vm } | ur @MidHRule {|hm}
- X /vm vr @VSRule |
- X /vm vr @VRule {^/vm } | dr @MidHRule {|hm}
- X }
- X | y
- X }
- X
- X def @NSep
- X left x
- X named hm { hmargin }
- X right y
- X {
- X x | @OneCol { |hm } | @OneCol { |hm } | y
- X }
- X
- X def @LeftEdge
- X named ur { no } # Rule up above entry
- X named dr { no } # Rule down below entry
- X named sr { no } # Rule separating x from y
- X named hm { hmargin } # Horizontal margin
- X named vm { vmargin } # Vertical margin
- X right x
- X {
- X sr @Case
- X {
- X no @Yield { x }
- X else @Yield
- X { @OneCol
- X {
- X sr @VRule { /vm } | ur @LeftHRule { |hm }
- X ^/vm sr @VSRule |
- X /vm sr @VRule { ^/vm } | dr @LeftHRule { |hm }
- X }
- X | x
- X }
- X }
- X }
- X
- X def @RightEdge
- X left x
- X named ur { no } # Rule up above entry
- X named dr { no } # Rule down below entry
- X named sr { no } # Rule separating x from y
- X named hm { hmargin } # Horizontal margin
- X named vm { vmargin } # Vertical margin
- X {
- X sr @Case
- X {
- X no @Yield { x }
- X else @Yield
- X {
- X x | @OneCol
- X {
- X ur @RightHRule { |hm }
- X /vm
- X /vm dr @RightHRule { |hm }
- X }
- X | @OneCol
- X {
- X sr @VRuleRight { /vm }
- X /vm sr @VSRuleRight
- X /vm sr @VRuleRight { ^/vm }
- X }
- X }
- X }
- X }
- X
- X def @DoRowa
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named above { above }
- X named below { below }
- X named side { side }
- X named vmargin { vmargin }
- X {
- X @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
- X @Fmta
- X A { A } B { B } C { C } D { D } E { E }
- X F { F } G { G } H { H } I { I } J { J }
- X K { K } L { L } M { M } N { N } O { O }
- X P { P } Q { Q } R { R } S { S } T { T }
- X U { U } V { V } W { W } X { X } Y { Y }
- X Z { Z }
- X @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
- X ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
- X !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
- X !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
- X , { x @NSep y }
- X @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
- X }
- X
- X def @DoRowb
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named above { above }
- X named below { below }
- X named side { side }
- X named vmargin { vmargin }
- X {
- X @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
- X @Fmtb
- X A { A } B { B } C { C } D { D } E { E }
- X F { F } G { G } H { H } I { I } J { J }
- X K { K } L { L } M { M } N { N } O { O }
- X P { P } Q { Q } R { R } S { S } T { T }
- X U { U } V { V } W { W } X { X } Y { Y }
- X Z { Z }
- X @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
- X ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
- X !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
- X !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
- X , { x @NSep y }
- X @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
- X }
- X
- X def @DoRowc
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named above { above }
- X named below { below }
- X named side { side }
- X named vmargin { vmargin }
- X {
- X @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
- X @Fmtc
- X A { A } B { B } C { C } D { D } E { E }
- X F { F } G { G } H { H } I { I } J { J }
- X K { K } L { L } M { M } N { N } O { O }
- X P { P } Q { Q } R { R } S { S } T { T }
- X U { U } V { V } W { W } X { X } Y { Y }
- X Z { Z }
- X @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
- X ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
- X !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
- X !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
- X , { x @NSep y }
- X @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
- X }
- X
- X def @DoRowd
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named above { above }
- X named below { below }
- X named side { side }
- X named vmargin { vmargin }
- X {
- X @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
- X @Fmtd
- X A { A } B { B } C { C } D { D } E { E }
- X F { F } G { G } H { H } I { I } J { J }
- X K { K } L { L } M { M } N { N } O { O }
- X P { P } Q { Q } R { R } S { S } T { T }
- X U { U } V { V } W { W } X { X } Y { Y }
- X Z { Z }
- X @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
- X ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
- X !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
- X !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
- X , { x @NSep y }
- X @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
- X }
- X
- X def @DoRowe
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named above { above }
- X named below { below }
- X named side { side }
- X named vmargin { vmargin }
- X {
- X @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
- X @Fmte
- X A { A } B { B } C { C } D { D } E { E }
- X F { F } G { G } H { H } I { I } J { J }
- X K { K } L { L } M { M } N { N } O { O }
- X P { P } Q { Q } R { R } S { S } T { T }
- X U { U } V { V } W { W } X { X } Y { Y }
- X Z { Z }
- X @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
- X ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
- X !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
- X !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
- X , { x @NSep y }
- X @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
- X }
- X
- X def @DoRowf
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named above { above }
- X named below { below }
- X named side { side }
- X named vmargin { vmargin }
- X {
- X @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
- X @Fmtf
- X A { A } B { B } C { C } D { D } E { E }
- X F { F } G { G } H { H } I { I } J { J }
- X K { K } L { L } M { M } N { N } O { O }
- X P { P } Q { Q } R { R } S { S } T { T }
- X U { U } V { V } W { W } X { X } Y { Y }
- X Z { Z }
- X @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
- X ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
- X !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
- X !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
- X , { x @NSep y }
- X @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
- X }
- X
- X def @DoRowg
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named above { above }
- X named below { below }
- X named side { side }
- X named vmargin { vmargin }
- X {
- X @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
- X @Fmtg
- X A { A } B { B } C { C } D { D } E { E }
- X F { F } G { G } H { H } I { I } J { J }
- X K { K } L { L } M { M } N { N } O { O }
- X P { P } Q { Q } R { R } S { S } T { T }
- X U { U } V { V } W { W } X { X } Y { Y }
- X Z { Z }
- X @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
- X ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
- X !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
- X !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
- X , { x @NSep y }
- X @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
- X }
- X
- X def @DoRowh
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named above { above }
- X named below { below }
- X named side { side }
- X named vmargin { vmargin }
- X {
- X @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
- X @Fmth
- X A { A } B { B } C { C } D { D } E { E }
- X F { F } G { G } H { H } I { I } J { J }
- X K { K } L { L } M { M } N { N } O { O }
- X P { P } Q { Q } R { R } S { S } T { T }
- X U { U } V { V } W { W } X { X } Y { Y }
- X Z { Z }
- X @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
- X ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
- X !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
- X !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
- X , { x @NSep y }
- X @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
- X }
- X
- X def @DoRowi
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named above { above }
- X named below { below }
- X named side { side }
- X named vmargin { vmargin }
- X {
- X @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
- X @Fmti
- X A { A } B { B } C { C } D { D } E { E }
- X F { F } G { G } H { H } I { I } J { J }
- X K { K } L { L } M { M } N { N } O { O }
- X P { P } Q { Q } R { R } S { S } T { T }
- X U { U } V { V } W { W } X { X } Y { Y }
- X Z { Z }
- X @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
- X ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
- X !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
- X !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
- X , { x @NSep y }
- X @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
- X }
- X
- X def @DoRowj
- X named A {} named B {} named C {} named D {} named E {}
- X named F {} named G {} named H {} named I {} named J {}
- X named K {} named L {} named M {} named N {} named O {}
- X named P {} named Q {} named R {} named S {} named T {}
- X named U {} named V {} named W {} named X {} named Y {}
- X named Z {}
- X named above { above }
- X named below { below }
- X named side { side }
- X named vmargin { vmargin }
- X {
- X @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
- X @Fmtj
- X A { A } B { B } C { C } D { D } E { E }
- X F { F } G { G } H { H } I { I } J { J }
- X K { K } L { L } M { M } N { N } O { O }
- X P { P } Q { Q } R { R } S { S } T { T }
- X U { U } V { V } W { W } X { X } Y { Y }
- X Z { Z }
- X @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
- X ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
- X !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
- X !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
- X , { x @NSep y }
- X @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
- X }
- X
- X macro @Rowa { / @DoRowa }
- X macro @Rowb { / @DoRowb }
- X macro @Rowc { / @DoRowc }
- X macro @Rowd { / @DoRowd }
- X macro @Rowe { / @DoRowe }
- X macro @Rowf { / @DoRowf }
- X macro @Rowg { / @DoRowg }
- X macro @Rowh { / @DoRowh }
- X macro @Rowi { / @DoRowi }
- X macro @Rowj { / @DoRowj }
- X
- X macro @MarkRowa { ^/ @DoRowa }
- X macro @MarkRowb { ^/ @DoRowb }
- X macro @MarkRowc { ^/ @DoRowc }
- X macro @MarkRowd { ^/ @DoRowd }
- X macro @MarkRowe { ^/ @DoRowe }
- X macro @MarkRowf { ^/ @DoRowf }
- X macro @MarkRowg { ^/ @DoRowg }
- X macro @MarkRowh { ^/ @DoRowh }
- X macro @MarkRowi { ^/ @DoRowi }
- X macro @MarkRowj { ^/ @DoRowj }
- X
- X
- X @Body
- X
- X@End @Tab
- END_OF_FILE
- if test 25206 -ne `wc -c <'include/tab'`; then
- echo shar: \"'include/tab'\" unpacked with wrong size!
- fi
- # end of 'include/tab'
- fi
- echo shar: End of archive 4 \(of 35\).
- cp /dev/null ark4isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 35 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still must unpack the following archives:
- echo " " ${MISSING}
- fi
- exit 0
- exit 0 # Just in case...
-