/* COMMTOO.C -- Scribble command interpeter, continued written March 1981 by Craig A. Finseth Copyright (c) 1981 by Mark of the Unicorn Modifications Record: 8/3/81 Indent mode and Table of contents by Jeffrey D. Stone. */ #include "scribble.gbl" FLAG CheckEnv(tkn) /* deal with environments */ char *tkn; { char which; int ParaOut(), ParaStan(), ParaEnum(), ParaItem(); if (Test(tkn,"indent")) { /* jds */ env.eleft=env.cureleft+=HALFINCH; StartEnv(); return(TRUE); } if (which=MulTest(tkn,"address","flushleft")) { env.isfill=FALSE; env.iswrap=FALSE; if (which==1) env.preveleft=env.eleft= env.cureleft= (pag.pright+pag.pleft)/2; env.justifytype='l'; env.paraproc=NULL; StartEnv(); return(TRUE); } if (which=MulTest(tkn,"center","flushright")) { env.isfill=FALSE; env.iswrap=FALSE; env.justifytype= (which==1)? 'c' : 'r'; env.paraproc=NULL; StartEnv(); return(TRUE); } if (Test(tkn,"description")) { env.eleft=env.cureleft+=(env.eright-env.cureleft)/4; env.linespacing=LINEHEIGHT; env.paraproc= &ParaOut; StartEnv(); return(TRUE); } if (MulTest(tkn,"display","example")) { env.eleft=env.cureleft+=HALFINCH; env.eright-=HALFINCH/2; env.isfill=FALSE; env.iswrap=TRUE; env.justifytype='l'; env.iswhiteintact=TRUE; env.paraproc=NULL; StartEnv(); return(TRUE); } if (Test(tkn,"enumerate")) { env.preveleft=env.cureleft+2*CHARWIDTH; env.eleft=env.cureleft+=6*CHARWIDTH; env.enumcount=1; env.paraproc= &ParaEnum; StartEnv(); return(TRUE); } if (MulTest(tkn,"format","verbatim")) { env.linespacing=LINEHEIGHT; env.isfill=FALSE; env.iswrap=FALSE; env.justifytype='l'; env.iswhiteintact=TRUE; env.paraproc=NULL; StartEnv(); return(TRUE); } if (Test(tkn,"itemize")) { env.preveleft=env.cureleft+2*CHARWIDTH; env.eleft=env.cureleft+=HALFINCH; env.paraproc= &ParaItem; env.itemlevel++; StartEnv(); return(TRUE); } if (Test(tkn,"quotation")) { env.eleft=env.cureleft+=HALFINCH; env.eright-=HALFINCH; env.linespacing=LINEHEIGHT; StartEnv(); return(TRUE); } if (Test(tkn,"text")) { env.linespacing=sty.spacing; StartEnv(); return(TRUE); } if (Test(tkn,"verse")) { env.eleft=env.preveleft+=3*CHARWIDTH; env.cureleft=env.preveleft+2*CHARWIDTH; env.eright-=10*CHARWIDTH; env.linespacing=LINEHEIGHT; env.isfill=FALSE; env.justifytype='l'; env.paraproc= &ParaOut; StartEnv(); return(TRUE); } return(FALSE); } FLAG CheckSec(tkn) /* deal with sectioning commands */ char *tkn; { TITLELIST *tptr; STRING *token; char which; if (which=MulComp(tkn,"chapter","appendix")) { tptr=GetMem(sizeof(*tptr)); titletail->entnextptr=tptr; titletail=tptr; if (which==1) tptr->enttype='c'; else { tptr->enttype='a'; num.chapnum= ++num.appnum; } num.chaptitle=tptr->entptr=GetOneArg('r'); tptr->entnextptr=NULL; num.secnum=0; num.subnum=0; num.paranum=0; ++num.chapnum; BreakLine(); PNewPage(); PPutVert(6*LINEHEIGHT); tptr->entpage=num.pagenum; TPuts(" ("); if (which==1) TPutn(num.chapnum); else TPut('A'-1+num.chapnum); TPut(')'); EPush(); env.isfill=FALSE; env.justifytype='c'; PutInit(); PutChr(BOLDON); if (which==1) PutNum("Chapter ",num.chapnum,NULL); else { PutStr("Appendix "); PutChr('A'-1+num.chapnum); } PutFini(); BreakLine(); PPutVert(LINEHEIGHT); PutInit(); PutStr(SSToC(tptr->entptr)); PutChr(BOLDOFF); PutFini(); BreakLine(); PPutVert(3*LINEHEIGHT); EPop(); return(TRUE); } if (which=MulComp(tkn,"section","appendixsection")) { tptr=GetMem(sizeof(*tptr)); titletail->entnextptr=tptr; titletail=tptr; tptr->enttype= (which==1)? 's' : 'n'; num.sectitle=tptr->entptr=GetOneArg('r'); tptr->entnextptr=NULL; num.subnum=0; num.paranum=0; ++num.secnum; BreakLine(); PPutVert(4*LINEHEIGHT); EPush(); env.isfill=FALSE; env.justifytype='l'; PutInit(); if (num.chapnum != 0) { /* jds */ if (which==1) PutNum(NULL,num.chapnum,NULL); else PutChr('A'-1+num.chapnum); PutNum(".",num.secnum," "); } else { /* jds */ PutNum(NULL,num.secnum,"."); PutChr(' '); } PutStr(SSToc(tptr->entptr)); PutFini(); BreakLine(); tptr->entpage=num.pagenum; TPuts(" ("); if (num.chapnum != 0) { /* jds */ if (which==1) TPutn(num.chapnum); else TPut('A'-1+num.chapnum); TPut('.'); } TPutn(num.secnum); TPut(')'); PPutVert(2*LINEHEIGHT); EPop(); return(TRUE); } if (which=MulComp(tkn,"subsection","paragraph")) { tptr=GetMem(sizeof(*tptr)); titletail->entnextptr=tptr; titletail=tptr; tptr->enttype= (which==1)? 'b' : 'p'; tptr->entptr=GetOneArg('r'); if (which==1) { num.subtitle=tptr->entptr; num.paranum=0; ++num.subnum; } else { num.paratitle=tptr->entptr; ++num.paranum; } tptr->entnextptr=NULL; BreakLine(); PPutVert(2*LINEHEIGHT); EPush(); env.isfill=FALSE; env.justifytype='l'; if (num.chapnum != 0) PutNum(NULL,num.chapnum,"."); /* jds */ PutNum(NULL,num.secnum,"."); if (which==1) PutNum(NULL,num.subnum," "); else { PutNum(NULL,num.subnum,"."); PutNum(NULL,num.paranum," "); } PutStr(SSToC(tptr->entptr)); BreakLine(); tptr->entpage=num.pagenum; PPutVert(LINEHEIGHT); EPop(); return(TRUE); } if ((which=MulComp(tkn,"unnumbered","majorheading")) || SCComp(tkn,"heading")) { BreakLine(); if (which==1) PNewPage(); PPutVert((which?6:4)*LINEHEIGHT); EPush(); env.isfill=FALSE; env.justifytype='c'; PutInit(); PutChr(BOLDON); PutStr(SSToC(token=GetOneArg('r'))); SFree(token); PutChr(BOLDOFF); PutFini(); BreakLine(); PPutVert(3*LINEHEIGHT); EPop(); return(TRUE); } if (which=MulComp(tkn,"prefacesection","subheading")) { BreakLine(); PPutVert(4*LINEHEIGHT); EPush(); env.isfill=FALSE; env.justifytype='l'; PutStr(SSToC(token=GetOneArg('r'))); SFree(token); BreakLine(); PPutVert(2*LINEHEIGHT); EPop(); return(TRUE); } return(FALSE); } /* end of modified COMMTOO.C */ .