[BACK]Return to eqn_term.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/eqn_term.c between version 1.13 and 1.18

version 1.13, 2017/07/08 14:51:04 version 1.18, 2018/10/02 12:18:33
Line 20 
Line 20 
 #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 51  static void
Line 52  static void
 eqn_box(struct termp *p, const struct eqn_box *bp)  eqn_box(struct termp *p, const struct eqn_box *bp)
 {  {
         const struct eqn_box *child;          const struct eqn_box *child;
           const char *cp;
         int delim;          int delim;
   
         /* Delimiters around this box? */          /* Delimiters around this box? */
Line 67  eqn_box(struct termp *p, const struct eqn_box *bp)
Line 69  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 91  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 ((cp = strchr(bp->text, '\0')) > bp->text &&
                       (strchr("\"'([{", cp[-1]) != NULL ||
                        (bp->prev == NULL && (cp[-1] == '-' ||
                         (cp >= bp->text + 5 &&
                          strcmp(cp - 5, "\\[mi]") == 0)))))
                           p->flags |= TERMP_NOSPACE;
           }
   
         /* Special box types. */          /* Special box types. */
   
         if (bp->pos == EQNPOS_SQRT) {          if (bp->pos == EQNPOS_SQRT) {
                 term_word(p, "sqrt");                  term_word(p, "\\(sr");
                 if (bp->first != NULL) {                  if (bp->first != NULL) {
                         p->flags |= TERMP_NOSPACE;                          p->flags |= TERMP_NOSPACE;
                         eqn_box(p, bp->first);                          eqn_box(p, bp->first);
Line 98  eqn_box(struct termp *p, const struct eqn_box *bp)
Line 118  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) {

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.18

CVSweb