home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
amethyst
/
comtoo.dif
< prev
next >
Wrap
Text File
|
1984-01-16
|
6KB
|
291 lines
/* 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 */