]> git.cameronkatri.com Git - mandoc.git/blobdiff - eqn_term.c
clarify the difference between .Cm and .Ic;
[mandoc.git] / eqn_term.c
index d7bc700f03f4cd9031b43ec9606ce76abd730f2f..3e27233b30f9ef1192c472dd3f9be80f045d0744 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: eqn_term.c,v 1.15 2017/08/23 20:29:42 schwarze Exp $ */
+/*     $Id: eqn_term.c,v 1.19 2018/12/13 05:23:38 schwarze Exp $ */
 /*
  * Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -25,7 +25,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "mandoc.h"
+#include "eqn.h"
 #include "out.h"
 #include "term.h"
 
@@ -52,6 +52,7 @@ static void
 eqn_box(struct termp *p, const struct eqn_box *bp)
 {
        const struct eqn_box *child;
+       const char *cp;
        int delim;
 
        /* Delimiters around this box? */
@@ -94,15 +95,18 @@ eqn_box(struct termp *p, const struct eqn_box *bp)
                if (strchr("!\"'),.:;?]}", *bp->text) != NULL)
                        p->flags |= TERMP_NOSPACE;
                term_word(p, bp->text);
-               if (*bp->text != '\0' && strchr("\"'([{",
-                   bp->text[strlen(bp->text) - 1]) != NULL)
+               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. */
 
        if (bp->pos == EQNPOS_SQRT) {
-               term_word(p, "sqrt");
+               term_word(p, "\\(sr");
                if (bp->first != NULL) {
                        p->flags |= TERMP_NOSPACE;
                        eqn_box(p, bp->first);