-- TexTableDefs.mesa -- last written by Doug Wyatt, November 16, 1979 3:35 PM DIRECTORY TexCmdDefs: FROM "TexCmdDefs" USING[Cmd], TexDefs: FROM "TexDefs" USING[Char,Font,Dimn,Penalty,HangSpec,Digit, DefType,ChngType,IfType,BoxType,TopBotType,MarkType,CaseType,ModeType], TexGlueDefs: FROM "TexGlueDefs" USING[GluePtr,GlueType], TexHashDefs: FROM "TexHashDefs" USING[HashIndex], TexMathDefs: FROM "TexMathDefs" USING[MFont,MChar,TMChar,MathFontTableIndex,Delimiter, MType,SType,StyleStyle,MathSpace,AboveType,VctrType,DelimType], TexTokenDefs: FROM "TexTokenDefs" USING[TokenListPtr]; TexTableDefs: DEFINITIONS = BEGIN OPEN TexMathDefs,TexDefs; TableError: SIGNAL; UndefinedFont: ERROR; SaveStackError: ERROR; nlevs: CARDINAL = 32; Lev: TYPE = [0..nlevs); -- nesting level; 0 means undefined CurLev: PROCEDURE RETURNS[Lev]; EndingCode: TYPE = {bottomlevel, simpleblock, trueend, aligncode, alignentry, mathcode, outputend, noalignend, botinsend, topinsend, justend, mathblock, mathleft, endvcenter, endscanmath, falseend}; NewSaveLevel: PROCEDURE[EndingCode]; SaveCode: PROCEDURE RETURNS[EndingCode]; UnSave: PROCEDURE[EndingCode]; Cmd: TYPE = TexCmdDefs.Cmd; CmdInfo: TYPE = RECORD[SELECT COMPUTED Cmd FROM macprm,lbrace,rbrace,mathbr,tabmrk,supmrk,submrk, spacer,letter,otherchar,discr,accent,nonmathletter => [char: Char], mdiscr => [mchar: MChar], mathonly,tmcharentry => [tmchar: TMChar], fntfam => [mfont: MFont], call => [toklist: TexTokenDefs.TokenListPtr], assignglue => [glueparam: GlueParamType], assignreal => [dimnparam: DimnParamType], def => [deftype: DefType], chcode => [chngtype: ChngType], ifeven => [iftype: IfType], box => [boxtype: BoxType], hmove,vmove => [neg: BOOLEAN], vskip,hskip => [gluetype: TexGlueDefs.GlueType], leftright => [lr: DelimType], topbotins => [topbot: TopBotType], topbotmark => [marktype: MarkType], caseshift => [case: CaseType], mathinput => [mtype: MType, stype: SType], above => [abovetype: AboveType], mathstyle => [style: StyleStyle], mathspace => [space: MathSpace], vcenter => [vctr: VctrType], ifmode => [mode: ModeType], chartypeentry => [chartype: CharType], fontentry => [defined: BOOLEAN, font: Font], hangentry => [hangpar: HangPar], texparentry => [texpar: TexPar], glueentry => [glue: TexGlueDefs.GluePtr], undefined,ctrlseq,outpar,match,parend,endv,carret,xt,font,output,innput, stop,ddt,ascii,setcount,advcount,count,ifT,elsecode,save,leaders, halign,valign,noalign,vrule,hrule,mark,penlty,noindent,eject, newaccent,eqno,exspace,limsw,italcorr,hangindent,unskip => NULL, ENDCASE]; HashIndex: TYPE = TexHashDefs.HashIndex; HashEquiv: PROCEDURE[i: HashIndex] RETURNS[cmd: Cmd, info: CmdInfo]; SetHashEquiv: PROCEDURE[i: HashIndex, cmd: Cmd, info: CmdInfo, global: BOOLEAN_FALSE]; HashEquivDefined: PROCEDURE[i: HashIndex] RETURNS[BOOLEAN]; CharType: TYPE = { escape, -- escape delimiter (\ in TEX manual) lbrace, -- begin block symbol ( { ) rbrace, -- end block symbol ( } ) mathbr, -- math break ( $ ) tabmrk, -- tab mark ( in alignment ) carret, -- carriage return and comment mark ( % ) macprm, -- macro parameter ( # ) supmrk, -- superscript ( ^ ) submrk, -- subscript ( down arrow ) ignore, -- chars to ignore spacer, -- chars treated as blank space letter, -- chars treated as letters otherchar -- none of the above character types }; ChType: PROCEDURE[c: Char] RETURNS[CharType]; SetChType: PROCEDURE[c: Char, type: CharType]; MModeCode: PROCEDURE[c: Char] RETURNS[TMChar]; SetMModeCode: PROCEDURE[c: Char, tmchar: TMChar]; CurFont: PROCEDURE RETURNS[Font]; SetFont: PROCEDURE[f: Font]; CurMathFont: PROCEDURE[MathFontTableIndex] RETURNS[Font]; SetMathFont: PROCEDURE[MathFontTableIndex, Font]; HangParamType: TYPE = {begin, first, width}; HangPar: TYPE = RECORD[SELECT COMPUTED HangParamType FROM begin => [begin: CARDINAL], first => [first: BOOLEAN], width => [width: Dimn], ENDCASE]; CurHangIndent,GlobalHangIndent: PROCEDURE RETURNS[HangSpec]; SetHangIndent,SetGlobalHangIndent: PROCEDURE[HangSpec]; TexParamType: TYPE = {jpar, hpen, penpen, wpen, bpen, mbpen, mrpen, disppen, ragged, tracing}; PenaltyType: TYPE = TexParamType[jpar..disppen]; TexPar: TYPE = RECORD[SELECT COMPUTED TexParamType FROM jpar,hpen,penpen,wpen,bpen,mbpen,mrpen,disppen => [penalty: Penalty], ragged => [ragged: CARDINAL], tracing => [tracing: TraceInfo], ENDCASE]; TraceInfo: TYPE = RECORD [boxitems, boxlevel: [0..37B], showmacros,showinput,ddtstop: BOOLEAN, reportoverfull,showpages,ddtdump: BOOLEAN]; TexParam: PROCEDURE[t: TexParamType] RETURNS[TexPar]; SetTexParam: PROCEDURE[t: TexParamType, texpar: TexPar]; CurPenalty: PROCEDURE[t: PenaltyType] RETURNS[Penalty]; CurTracing: PROCEDURE RETURNS[TraceInfo]; GlueParamType: TYPE = {lineskip, baselineskip, parskip, dispskip, topskip, botskip, tabskip, dispaskip, dispbskip}; GlueParam: PROCEDURE[t: GlueParamType] RETURNS[TexGlueDefs.GluePtr]; SetGlueParam: PROCEDURE[t: GlueParamType, glue: TexGlueDefs.GluePtr]; DimnParamType: TYPE = {hsize, vsize, maxdepth, parindent, topbaseline, mathsurround, varunit, lineskiplimit}; DimnParam: PROCEDURE[t: DimnParamType] RETURNS[Dimn]; SetDimnParam: PROCEDURE[t: DimnParamType, d: Dimn]; Kount: PROCEDURE[Digit] RETURNS[INTEGER]; SetKount: PROCEDURE[Digit,INTEGER]; SpaceFactor: TYPE = Dimn; -- in thousandths sfOne: SpaceFactor=1000; -- a space factor of one SfTable: PROCEDURE[Char] RETURNS[SpaceFactor]; SetSfTable: PROCEDURE[Char,SpaceFactor]; AddDelimiter: PROCEDURE[c: Char, delim: Delimiter]; DelimLookup: PROCEDURE[Char] RETURNS[defined: BOOLEAN, delim: Delimiter]; TexHash: PRIVATE PROGRAM; TexEqtb: PRIVATE PROGRAM; TexHashInit: PRIVATE PROGRAM; TexState: PRIVATE PROGRAM; TexStateInit: PRIVATE PROGRAM; TexTableControl: PROGRAM; END.