diff --git a/unpacked/jax/output/CommonHTML/autoload/mtable.js b/unpacked/jax/output/CommonHTML/autoload/mtable.js
index 606f0866e..dd1362e99 100644
--- a/unpacked/jax/output/CommonHTML/autoload/mtable.js
+++ b/unpacked/jax/output/CommonHTML/autoload/mtable.js
@@ -435,13 +435,21 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () {
if (indent.indentshiftfirst !== MML.INDENTSHIFT.INDENTSHIFT) indent.indentshift = indent.indentshiftfirst;
if (indent.indentshift === "auto") indent.indentshift = "0";
var shift = CHTML.length2em(indent.indentshift,CHTML.cwidth);
- var labelshift = CHTML.length2em(values.minlabelspacing,CHTML.cwidth);
- if (this.displayIndent !== "0") {
- var dIndent = CHTML.length2em(CONFIG.displayIndent,CHTML.cwidth);
- shift += (indent.indentAlign === MML.INDENTALIGN.RIGHT ? -dIndent: dIndent);
+ var labelspace = CHTML.length2em(values.minlabelspacing,this.defaults.minlabelspacing);
+ var labelW = labelspace + state.W[LABEL], labelshift = 0, tw = state.R;
+ var dIndent = CHTML.length2em(CONFIG.displayIndent,CHTML.cwidth);
+ var s = (state.CALIGN[LABEL] === MML.INDENTALIGN.RIGHT ? -1 : 1);
+ if (indent.indentalign === MML.INDENTALIGN.CENTER) {
+ tw += 2 * (labelW - s*(shift + dIndent));
+ shift += dIndent;
+ } else if (state.CALIGN[LABEL] === indent.indentalign) {
+ if (dIndent < 0) {labelshift = s*dIndent; dIndent = 0}
+ shift += s*dIndent; if (labelW > s*shift) shift = s*labelW; shift += labelshift;
+ shift *= s; tw += shift;
+ } else {
+ tw += labelW - s*shift + dIndent;
+ shift -= s*dIndent; shift *= -s;
}
- if (indent.indentalign === MML.INDENTALIGN.CENTER) shift *= 2;
- var margin = "margin"+(indent.indentalign === MML.INDENTALIGN.RIGHT ? "Right" : "Left");
//
// Create boxes for table and labels
//
@@ -452,16 +460,25 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () {
table.style.display = "inline-table"; if (!table.style.width) table.style.width = "auto";
labels.style.verticalAlign = "top";
node.style.verticalAlign = "";
- if (shift) table.style[margin] = CHTML.Em(shift);
+ if (shift) {
+ if (indent.indentalign === MML.INDENTALIGN.CENTER) {
+ table.style.marginLeft = CHTML.Em(shift);
+ table.style.marginRight = CHTML.Em(-shift);
+ } else {
+ var margin = "margin" + (indent.indentalign === MML.INDENTALIGN.RIGHT ? "Right" : "Left");
+ table.style[margin] = CHTML.Em(shift);
+ }
+ }
//
// Add labels on correct side
//
if (state.CALIGN[LABEL] === "left") {
node.insertBefore(labels,box);
- labels.style.marginRight = CHTML.Em(-state.W[LABEL]);
+ labels.style.marginRight = CHTML.Em(-state.W[LABEL]-labelshift);
+ if (labelshift) labels.style.marginLeft = CHTML.Em(labelshift);
} else {
node.appendChild(labels);
- labels.style.marginLeft = CHTML.Em(-state.W[LABEL]);
+ labels.style.marginLeft = CHTML.Em(-state.W[LABEL]+labelshift);
}
//
// Vertically align the labels with their rows
@@ -483,14 +500,10 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () {
T += RSPACE[i];
}
//
- // Propagage full-width equations, and reserve
- // room for equation plus label and minlabelspacing
+ // Propagate full-width equations, and reserve room for equation plus label
//
node.style.width = this.CHTML.pwidth = "100%";
- var min = CHTML.length2em(values.minlabelspacing,this.defaults.minlabelspacing);
- var w = state.R + state.W[LABEL] + min;
- if (indent.indentalign === MML.INDENTALIGN.CENTER) w += state.W[LABEL] + min;
- this.CHTML.mwidth = CHTML.Em(w);
+ this.CHTML.mwidth = CHTML.Em(tw);
}
});
diff --git a/unpacked/jax/output/CommonHTML/jax.js b/unpacked/jax/output/CommonHTML/jax.js
index 03639fd5a..49448536d 100644
--- a/unpacked/jax/output/CommonHTML/jax.js
+++ b/unpacked/jax/output/CommonHTML/jax.js
@@ -1637,7 +1637,7 @@
shift *= CHTML.em/CHTML.outerEm;
HUB.Insert(styles,({
left: {marginLeft: CHTML.Em(shift)},
- right: {marginLeft: CHTML.Em(Math.max(0,this.CHTML.w+shift)), marginRight: CHTML.Em(-shift)},
+ right: {marginRight: CHTML.Em(-shift)},
center: {marginLeft: CHTML.Em(shift), marginRight: CHTML.Em(-shift)}
})[values.indentalign]);
}