Improve operator name spacing After supsub and after close-paren was wrong, see GitHub comment.
diff --git a/src/commands/math/basicSymbols.js b/src/commands/math/basicSymbols.js index 2b55143..06ea85c 100644 --- a/src/commands/math/basicSymbols.js +++ b/src/commands/math/basicSymbols.js
@@ -122,8 +122,11 @@ first.ctrlSeq = (isBuiltIn ? '\\' : '\\operatorname{') + first.ctrlSeq; last.ctrlSeq += (isBuiltIn ? ' ' : '}'); if (TwoWordOpNames.hasOwnProperty(word)) last[L][L][L].jQ.addClass('mq-last'); - if (nonOperatorSymbol(first[L])) first.jQ.addClass('mq-first'); - if (nonOperatorSymbol(last[R])) last.jQ.addClass('mq-last'); + if (!shouldOmitPadding(first[L])) first.jQ.addClass('mq-first'); + if (!shouldOmitPadding(last[R]) && !(last[R] instanceof Bracket)) { + // also omit space between operator name and paren like in sin(x) + last.jQ.addClass('mq-last'); + } i += len - 1; first = last; @@ -132,8 +135,9 @@ } } }; - function nonOperatorSymbol(node) { - return node instanceof Symbol && !(node instanceof BinaryOperator); + function shouldOmitPadding(node) { + // omit padding if no node, or if node already has padding (to avoid double-padding) + return !node || (node instanceof BinaryOperator) || (node instanceof SummationNotation); } }); var BuiltInOpNames = {}; // the set of operator names like \sin, \cos, etc that
diff --git a/test/visual.html b/test/visual.html index 0429dd0..6028a1a 100644 --- a/test/visual.html +++ b/test/visual.html
@@ -187,7 +187,17 @@ <tr><td><span class="mathquill-static-math">^{\frac{as}{ }df}</span><td><span>^{\frac{as}{ }df}</span> <tr><td><span class="mathquill-static-math">e^{i\pi}+1=0</span><td><span>e^{i\pi}+1=0</span> <tr><td><span class="mathquill-static-math">\sqrt[n]{1}</span><td><span>\sqrt[n]{1}</span> -<tr><td><span class="mathquill-static-math">\theta + \sin 2\deg</span><td><span>\theta + \sin 2\deg</span> +<tr><td><span class="mathquill-static-math">12a\sin b</span></td><td><span>12a\sin b</span> +<tr><td><span class="mathquill-static-math">1a^2 \sin b</span></td><td><span>1a^2 \sin b</span> +<tr><td><span class="mathquill-static-math">a + \sin b</span></td><td><span>a + \sin b</span> +<tr><td><span class="mathquill-static-math">a + b</span></td><td><span>a + b</span> +<tr><td><span class="mathquill-static-math">\sum\sin</span></td><td><span>\sum\sin</span> +<tr><td><span class="mathquill-static-math">\sum a</span></td><td><span>\sum a</span> +<tr><td><span class="mathquill-static-math">(\sin)</span></td><td><span>(\sin)</span> +<tr><td><span class="mathquill-static-math">\left(\sin\right)</span></td><td><span>\left(\sin\right)</span> +<tr><td><span class="mathquill-static-math">(x)\sin(x)</span></td><td><span>(x)\sin(x)</span> +<tr><td><span class="mathquill-static-math">\left(x\right)\sin\left(x\right)</span></td><td><span>\left(x\right)\sin\left(x\right)</span> +<tr><td><span class="mathquill-static-math">a \sin b</span></td><td><span>a \sin b</span> <tr><td><span class="mathquill-static-math">-1 + +-2</span><td><span>-1 + +-2</span> <tr><td><span class="mathquill-static-math">\left ( n+1 \right ) + \frac{1}{\frac{n}{k}} + \binom{n}{k}</span><td><span>\left ( n+1 \right ) + \frac{1}{\frac{n}{k}} + \binom{n}{k}</span> <tr><td><span class="mathquill-static-math">x_{\frac{1}{\frac{2}{3}}}^{\frac{\frac{1}{2}}{3}}</span><td><span>x_{\frac{1}{\frac{2}{3}}}^{\frac{\frac{1}{2}}{3}}</span>