version 1.12, 2017/06/20 17:24:35 |
version 1.13, 2017/06/23 02:32:12 |
|
|
#include <sys/types.h> |
#include <sys/types.h> |
|
|
#include <assert.h> |
#include <assert.h> |
|
#include <ctype.h> |
#include <stdio.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <stdlib.h> |
#include <string.h> |
#include <string.h> |
Line 33 eqn_box(struct html *p, const struct eqn_box *bp) |
|
Line 34 eqn_box(struct html *p, const struct eqn_box *bp) |
|
{ |
{ |
struct tag *post, *row, *cell, *t; |
struct tag *post, *row, *cell, *t; |
const struct eqn_box *child, *parent; |
const struct eqn_box *child, *parent; |
|
const unsigned char *cp; |
size_t i, j, rows; |
size_t i, j, rows; |
|
enum htmltag tag; |
|
enum eqn_fontt font; |
|
|
if (NULL == bp) |
if (NULL == bp) |
return; |
return; |
Line 136 eqn_box(struct html *p, const struct eqn_box *bp) |
|
Line 140 eqn_box(struct html *p, const struct eqn_box *bp) |
|
print_otag(p, TAG_MTD, ""); |
print_otag(p, TAG_MTD, ""); |
} |
} |
|
|
if (NULL != bp->text) { |
if (bp->text != NULL) { |
assert(NULL == post); |
assert(post == NULL); |
post = print_otag(p, TAG_MI, ""); |
tag = TAG_MI; |
|
cp = (unsigned char *)bp->text; |
|
if (isdigit(cp[0]) || (cp[0] == '.' && isdigit(cp[1]))) { |
|
tag = TAG_MN; |
|
while (*++cp != '\0') { |
|
if (*cp != '.' && !isdigit(*cp)) { |
|
tag = TAG_MI; |
|
break; |
|
} |
|
} |
|
} else if (*cp != '\0' && isalpha(*cp) == 0) { |
|
tag = TAG_MO; |
|
while (*++cp != '\0') { |
|
if (isalnum(*cp)) { |
|
tag = TAG_MI; |
|
break; |
|
} |
|
} |
|
} |
|
font = bp->font; |
|
if (bp->text[0] != '\0' && |
|
(((tag == TAG_MN || tag == TAG_MO) && |
|
font == EQNFONT_ROMAN) || |
|
(tag == TAG_MI && font == (bp->text[1] == '\0' ? |
|
EQNFONT_ITALIC : EQNFONT_ROMAN)))) |
|
font = EQNFONT_NONE; |
|
switch (font) { |
|
case EQNFONT_NONE: |
|
post = print_otag(p, tag, ""); |
|
break; |
|
case EQNFONT_ROMAN: |
|
post = print_otag(p, tag, "?", "fontstyle", "normal"); |
|
break; |
|
case EQNFONT_BOLD: |
|
case EQNFONT_FAT: |
|
post = print_otag(p, tag, "?", "fontweight", "bold"); |
|
break; |
|
case EQNFONT_ITALIC: |
|
post = print_otag(p, tag, "?", "fontstyle", "italic"); |
|
break; |
|
default: |
|
abort(); |
|
} |
print_text(p, bp->text); |
print_text(p, bp->text); |
} else if (NULL == post) { |
} else if (NULL == post) { |
if (NULL != bp->left || NULL != bp->right) |
if (NULL != bp->left || NULL != bp->right) |