|  | # include "e.h" | 
|  |  | 
|  | void setfont(char *ch1) | 
|  | { | 
|  | yyval = ft; | 
|  | if (strcmp(ch1, "I") == 0) {	/* I and italic mean merely position 2 */ | 
|  | *ch1 = '2'; | 
|  | ft = ITAL; | 
|  | } else if (strcmp(ch1, "B") == 0) {	/* and similarly for B & bold */ | 
|  | *ch1 = '3'; | 
|  | ft = BLD; | 
|  | } else if (strcmp(ch1, "R") == 0) {	/* and R and roman */ | 
|  | *ch1 = '1'; | 
|  | ft = ROM; | 
|  | } else { | 
|  | ft = ROM;	/* assume it's a roman style */ | 
|  | } | 
|  | ftp++; | 
|  | if (ftp >= &ftstack[10]) | 
|  | ERROR "font stack overflow (10)" FATAL; | 
|  | ftp->ft = ft; | 
|  | if (ch1[1] == 0) {	/* 1-char name */ | 
|  | ftp->name[0] = *ch1; | 
|  | ftp->name[1] = '\0'; | 
|  | } else | 
|  | sprintf(ftp->name, "(%s", ch1); | 
|  | dprintf(".\tsetfont %s %c\n", ch1, ft); | 
|  | } | 
|  |  | 
|  | void font(int p1, int p2) | 
|  | { | 
|  | /* old font in p1, new in ft */ | 
|  | yyval = p2; | 
|  | lfont[yyval] = rfont[yyval] = ft==ITAL ? ITAL : ROM; | 
|  | ftp--; | 
|  | ft = p1; | 
|  | } | 
|  |  | 
|  | void globfont(void) | 
|  | { | 
|  | char temp[20]; | 
|  |  | 
|  | getstr(temp, sizeof(temp)); | 
|  | yyval = eqnreg = 0; | 
|  | if (strcmp(temp, "I") == 0 || strncmp(temp, "it", 2) == 0) { | 
|  | ft = ITAL; | 
|  | strcpy(temp, "2"); | 
|  | } else if (strcmp(temp, "B") == 0 || strncmp(temp, "bo", 2) == 0) { | 
|  | ft = BLD; | 
|  | strcpy(temp, "3"); | 
|  | } else if (strcmp(temp, "R") == 0 || strncmp(temp, "ro", 2) == 0) { | 
|  | ft = ROM; | 
|  | strcpy(temp, "1"); | 
|  | } else { | 
|  | ft = ROM;	/* assume it's a roman style */ | 
|  | } | 
|  | ftstack[0].ft = ft; | 
|  | if (temp[1] == 0)	/* 1-char name */ | 
|  | strcpy(ftstack[0].name, temp); | 
|  | else | 
|  | sprintf(ftstack[0].name, "(%.2s", temp); | 
|  | } | 
|  |  | 
|  | void fatbox(int p) | 
|  | { | 
|  | extern double Fatshift; | 
|  |  | 
|  | yyval = p; | 
|  | printf(".ds %d \\*(%d\\h'-\\w'\\*(%d'u+%gm'\\*(%d\n", p, p, p, Fatshift, p); | 
|  | } |