version 1.12, 2017/07/07 19:06:31 |
version 1.14, 2017/08/23 20:03:17 |
|
|
#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 40 static void eqn_box(struct termp *, const struct eqn_b |
|
Line 41 static void eqn_box(struct termp *, const struct eqn_b |
|
|
|
|
|
void |
void |
term_eqn(struct termp *p, const struct eqn *ep) |
term_eqn(struct termp *p, const struct eqn_box *bp) |
{ |
{ |
|
|
eqn_box(p, ep->root); |
eqn_box(p, bp); |
p->flags &= ~TERMP_NOSPACE; |
p->flags &= ~TERMP_NOSPACE; |
} |
} |
|
|
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 98 eqn_box(struct termp *p, const struct eqn_box *bp) |
|
Line 108 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) { |