Deleted Added
full compact
1c1
< /* $Id: eqn_term.c,v 1.5 2014/04/20 16:46:04 schwarze Exp $ */
---
> /* $Id: eqn_term.c,v 1.7 2014/10/12 14:49:39 schwarze Exp $ */
3a4
> * Copyright (c) 2014 Ingo Schwarze <schwarze@openbsd.org>
17d17
< #ifdef HAVE_CONFIG_H
19d18
< #endif
20a20,21
> #include <sys/types.h>
>
45d45
< p->flags |= TERMP_NONOSPACE;
47,48c47
< term_word(p, " ");
< p->flags &= ~TERMP_NONOSPACE;
---
> p->flags &= ~TERMP_NOSPACE;
53a53
> const struct eqn_box *child;
55c55,63
< if (EQNFONT_NONE != bp->font)
---
> if (bp->type == EQN_LIST ||
> (bp->type == EQN_PILE && (bp->prev || bp->next)) ||
> (bp->parent != NULL && bp->parent->pos == EQNPOS_SQRT)) {
> if (bp->parent->type == EQN_SUBEXPR && bp->prev != NULL)
> p->flags |= TERMP_NOSPACE;
> term_word(p, bp->left != NULL ? bp->left : "(");
> p->flags |= TERMP_NOSPACE;
> }
> if (bp->font != EQNFONT_NONE)
57,60d64
< if (bp->left)
< term_word(p, bp->left);
< if (EQN_SUBEXPR == bp->type)
< term_word(p, "(");
62c66
< if (bp->text)
---
> if (bp->text != NULL)
65c69,71
< if (bp->first)
---
> if (bp->pos == EQNPOS_SQRT) {
> term_word(p, "sqrt");
> p->flags |= TERMP_NOSPACE;
66a73,103
> } else if (bp->type == EQN_SUBEXPR) {
> child = bp->first;
> eqn_box(p, child);
> p->flags |= TERMP_NOSPACE;
> term_word(p, bp->pos == EQNPOS_OVER ? "/" :
> (bp->pos == EQNPOS_SUP ||
> bp->pos == EQNPOS_TO) ? "^" : "_");
> p->flags |= TERMP_NOSPACE;
> child = child->next;
> eqn_box(p, child);
> if (bp->pos == EQNPOS_FROMTO ||
> bp->pos == EQNPOS_SUBSUP) {
> p->flags |= TERMP_NOSPACE;
> term_word(p, "^");
> p->flags |= TERMP_NOSPACE;
> child = child->next;
> eqn_box(p, child);
> }
> } else {
> child = bp->first;
> if (bp->type == EQN_MATRIX && child->type == EQN_LIST)
> child = child->first;
> while (child != NULL) {
> eqn_box(p,
> bp->type == EQN_PILE &&
> child->type == EQN_LIST &&
> child->args == 1 ?
> child->first : child);
> child = child->next;
> }
> }
68,72c105
< if (EQN_SUBEXPR == bp->type)
< term_word(p, ")");
< if (bp->right)
< term_word(p, bp->right);
< if (EQNFONT_NONE != bp->font)
---
> if (bp->font != EQNFONT_NONE)
73a107,114
> if (bp->type == EQN_LIST ||
> (bp->type == EQN_PILE && (bp->prev || bp->next)) ||
> (bp->parent != NULL && bp->parent->pos == EQNPOS_SQRT)) {
> p->flags |= TERMP_NOSPACE;
> term_word(p, bp->right != NULL ? bp->right : ")");
> if (bp->parent->type == EQN_SUBEXPR && bp->next != NULL)
> p->flags |= TERMP_NOSPACE;
> }
75,76c116,123
< if (bp->next)
< eqn_box(p, bp->next);
---
> if (bp->top != NULL) {
> p->flags |= TERMP_NOSPACE;
> term_word(p, bp->top);
> }
> if (bp->bottom != NULL) {
> p->flags |= TERMP_NOSPACE;
> term_word(p, "_");
> }