version 1.13, 2017/07/08 14:51:04 |
version 1.15, 2017/08/23 20:29:42 |
|
|
#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 67 eqn_box(struct termp *p, const struct eqn_box *bp) |
|
Line 68 eqn_box(struct termp *p, const struct eqn_box *bp) |
|
((bp->parent->type == EQN_LIST && bp->expectargs == 1) || |
((bp->parent->type == EQN_LIST && bp->expectargs == 1) || |
(bp->parent->type == EQN_SUBEXPR && |
(bp->parent->type == EQN_SUBEXPR && |
bp->pos != EQNPOS_SQRT)))))) { |
bp->pos != EQNPOS_SQRT)))))) { |
if (bp->parent->type == EQN_SUBEXPR && bp->prev != NULL) |
if ((bp->parent->type == EQN_SUBEXPR && bp->prev != NULL) || |
|
(bp->type == EQN_LIST && |
|
bp->first != NULL && |
|
bp->first->type != EQN_PILE && |
|
bp->first->type != EQN_MATRIX && |
|
bp->prev != NULL && |
|
(bp->prev->type == EQN_LIST || |
|
(bp->prev->type == EQN_TEXT && |
|
(*bp->prev->text == '\\' || |
|
isalpha((unsigned char)*bp->prev->text)))))) |
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
term_word(p, bp->left != NULL ? bp->left : "("); |
term_word(p, bp->left != NULL ? bp->left : "("); |
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
Line 80 eqn_box(struct termp *p, const struct eqn_box *bp) |
|
Line 90 eqn_box(struct termp *p, const struct eqn_box *bp) |
|
if (bp->font != EQNFONT_NONE) |
if (bp->font != EQNFONT_NONE) |
term_fontpush(p, fontmap[(int)bp->font]); |
term_fontpush(p, fontmap[(int)bp->font]); |
|
|
if (bp->text != NULL) |
if (bp->text != NULL) { |
|
if (strchr("!\"'),.:;?]}", *bp->text) != NULL) |
|
p->flags |= TERMP_NOSPACE; |
term_word(p, bp->text); |
term_word(p, bp->text); |
|
if (*bp->text != '\0' && strchr("\"'([{", |
|
bp->text[strlen(bp->text) - 1]) != NULL) |
|
p->flags |= TERMP_NOSPACE; |
|
} |
|
|
/* Special box types. */ |
/* Special box types. */ |
|
|
Line 98 eqn_box(struct termp *p, const struct eqn_box *bp) |
|
Line 114 eqn_box(struct termp *p, const struct eqn_box *bp) |
|
term_word(p, bp->pos == EQNPOS_OVER ? "/" : |
term_word(p, bp->pos == EQNPOS_OVER ? "/" : |
(bp->pos == EQNPOS_SUP || |
(bp->pos == EQNPOS_SUP || |
bp->pos == EQNPOS_TO) ? "^" : "_"); |
bp->pos == EQNPOS_TO) ? "^" : "_"); |
p->flags |= TERMP_NOSPACE; |
|
child = child->next; |
child = child->next; |
if (child != NULL) { |
if (child != NULL) { |
|
p->flags |= TERMP_NOSPACE; |
eqn_box(p, child); |
eqn_box(p, child); |
if (bp->pos == EQNPOS_FROMTO || |
if (bp->pos == EQNPOS_FROMTO || |
bp->pos == EQNPOS_SUBSUP) { |
bp->pos == EQNPOS_SUBSUP) { |