diff --git a/unpacked/jax/output/CommonHTML/autoload/mtable.js b/unpacked/jax/output/CommonHTML/autoload/mtable.js index 0012b2788..cdec28225 100644 --- a/unpacked/jax/output/CommonHTML/autoload/mtable.js +++ b/unpacked/jax/output/CommonHTML/autoload/mtable.js @@ -59,11 +59,6 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () { // this.CHTMLgetBoxSizes(values,state); this.CHTMLgetAttributes(values,state); - if (values.equalrows) { - state.HD = true; - state.HH = Math.max.apply(Math,state.H); - state.DD = Math.max.apply(Math,state.D); - } this.CHTMLadjustCells(values,state); if (values.frame) table.style.border = state.t+" "+values.frame; this.CHTMLalignV(values,state,node); @@ -110,6 +105,12 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () { if (cbox.w > W[j]) W[j] = cbox.w; } } + if (values.equalrows) { + state.HD = true; + var HH = Math.max.apply(Math,H); + var DD = Math.max.apply(Math,D); + for (var i = 0, m = H.length; i < m; i++) {H[i] = HH; D[i] = DD} + } state.H = H; state.D = D; state.W = W, state.J = J; }, // @@ -187,19 +188,23 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () { CALIGN = state.CALIGN, RALIGN = state.RALIGN, RCALIGN = state.RCALIGN; CSPACE[state.J] *= 2; RSPACE[ROWS.length-1] *= 2; // since halved below - var T = "0", B, R, L, border, cbox, align; - if (values.fspace) T = CHTML.Em(state.FSPACE[1]); + var T = "0", B, R, L, border, cbox, align, lastB = 0; + if (values.fspace) { + lastB = state.FSPACE[1]; + T = CHTML.Em(state.FSPACE[1]); + } + state.RHD = []; state.RH = []; for (var i = 0, m = ROWS.length; i < m; i++) { var row = ROWS[i], rdata = this.data[i]; // // Space and borders between rows // B = RSPACE[i]/2; border = null; L = "0"; - if (RLINES[i] !== MML.LINES.NONE && RLINES[i] !== "") { - border = state.t+" "+RLINES[i]; - B -= 1/CHTML.em/2; - } - B = CHTML.Em(Math.max(0,B)); + if (RLINES[i] !== MML.LINES.NONE && RLINES[i] !== "") border = state.t+" "+RLINES[i]; + state.RH[i] = lastB + state.H[i]; // distance to baseline in row + lastB = Math.max(0,B); + state.RHD[i] = state.RH[i] + lastB + state.D[i]; // total height of row + B = CHTML.Em(lastB); // // Frame space for initial cell // @@ -219,7 +224,7 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () { R -= 1/CHTML.em/2; } R = CHTML.Em(Math.max(0,R)); - cell.padding = T+" "+R+" "+B+" "+L; + cell.padding = T+" "+R+" 0px "+L; if (border) cell.borderBottom = border; L = R; // @@ -231,25 +236,12 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () { align = (rdata.data[j-s].columnalign||RCALIGN[i][j]||CALIGN[j]); if (align !== MML.ALIGN.CENTER) cell.textAlign = align; // - // Equal heights forced by adding an element of the proper size - // (setting style.height seems to work very strangely) + // Adjust baseline of cells to match cell height // - if (state.HD && j === 0) { - CHTML.addElement(row[j].parentNode,"mjx-mtd",{style:{padding:T+" 0 "+B}}, - [["mjx-box",{style:{ - height:CHTML.Em(state.HH+state.DD), - "vertical-align":CHTML.Em(-state.DD) - }}]] - ); - } - // - // Adjust height and depth of cells - // - cell = row[j].firstChild.style; var H = Math.max(1,cbox.h); - if (H !== state.H[i]) cell.marginTop = CHTML.Em(state.H[i]-H); - if (cbox.d < state.D[i]) cell.marginBottom = CHTML.Em(state.D[i]-cbox.d); + if (H !== state.H[i]) row[j].firstChild.style.marginTop = CHTML.Em(state.H[i]-H); } + row.node.style.height = CHTML.Em(state.RHD[i]); T = B; } CSPACE[state.J] /= 2; RSPACE[ROWS.length-1] /= 2; // back to normal @@ -277,9 +269,8 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () { var T = 0, B = 0, a = CHTML.TEX.axis_height; if (values.fspace) T += state.FSPACE[1]; if (values.frame) {T += 2/CHTML.em; B += 1/CHTML.em} - var h = state.HH, d = state.DD; for (var i = 0; i < M; i++) { - if (!state.HD) {h = H[i]; d = D[i]} + var h = H[i], d = D[i]; T += h + d + RSPACE[i]; if (n) { if (i === n-1) { @@ -411,10 +402,9 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () { CHTMLstretchCells: function (values,state) { var ROWS = state.rows, H = state.H, D = state.D, W = state.W, J = state.J, M = ROWS.length-1; - var h = state.HH, d = state.DD; for (var i = 0; i <= M; i++) { var row = ROWS[i], rdata = this.data[i]; - if (!state.HD) {h = H[i]; d = D[i]} + var h = H[i], d = D[i]; for (var j = 0; j <= J; j++) { var cell = row[j], cdata = rdata.data[j]; if (!cdata) continue; @@ -457,7 +447,7 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () { var box = CHTML.addElement(node,"mjx-box",{ style:{width:"100%","text-align":indent.indentalign} }); box.appendChild(table); - var labels = CHTML.Element("mjx-stack"); + var labels = CHTML.Element("mjx-itable"); table.style.display = "inline-table"; if (!table.style.width) table.style.width = "auto"; labels.style.verticalAlign = "top"; table.style.verticalAlign = CHTML.Em(state.T-state.B-state.H[0]); @@ -485,21 +475,18 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () { // // Vertically align the labels with their rows // - var LABELS = state.labels, T = 0, H = state.H, D = state.D, RSPACE = state.RSPACE; + var LABELS = state.labels, T = 0; if (values.fspace) T = state.FSPACE[0] + (values.frame ? 1/CHTML.em : 0); - var h = state.HH, d = state.DD; for (var i = 0, m = LABELS.length; i < m; i++) { - if (!state.HD) {h = H[i]; d = D[i]} if (LABELS[i] && this.data[i].data[0]) { labels.appendChild(LABELS[i]); var lbox = this.data[i].data[0].CHTML; - T += h - Math.max(1,lbox.h); - if (T) LABELS[i].style.marginTop = CHTML.Em(T); - T = d - lbox.d; + T = state.RH[i] - Math.max(1,lbox.h); + if (T) LABELS[i].firstChild.firstChild.style.marginTop = CHTML.Em(T); + LABELS[i].style.height = CHTML.Em(state.RHD[i]); } else { - T += h + d; + CHTML.addElement(labels,"mjx-label",{style:{height:CHTML.Em(state.RHD[i])}}); } - T += RSPACE[i]; } // // Propagate full-width equations, and reserve room for equation plus label @@ -521,7 +508,7 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () { // Add a new row with no label // if (!options) options = {rows:[],labels:[]}; - var row = []; options.rows.push(row); + var row = []; options.rows.push(row); row.node = node; options.labels.push(null); // // Add the cells to the row @@ -545,7 +532,7 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () { // Add a new row, and get the label // if (!options) options = {rows:[],labels:[]}; - var row = []; options.rows.push(row); + var row = []; options.rows.push(row); row.node = node; var label = CHTML.Element("mjx-label"); options.labels.push(label); this.CHTMLaddChild(label,0,options); if (this.data[0]) options.labeled = true; diff --git a/unpacked/jax/output/CommonHTML/jax.js b/unpacked/jax/output/CommonHTML/jax.js index 724a5b878..da8fc5c91 100644 --- a/unpacked/jax/output/CommonHTML/jax.js +++ b/unpacked/jax/output/CommonHTML/jax.js @@ -129,13 +129,13 @@ ".mjx-mtr": {display:"table-row"}, ".mjx-mlabeledtr": {display:"table-row"}, ".mjx-mtd": {display:"table-cell", "text-align":"center"}, - ".mjx-label": {display:"block"}, + ".mjx-label": {display:"table-row"}, ".mjx-box": {display:"inline-block"}, ".mjx-block": {display:"block"}, ".mjx-span": {display:"inline"}, ".mjx-char": {display:"block", "white-space":"pre"}, - ".mjx-itable": {display:"inline-table"}, + ".mjx-itable": {display:"inline-table", width:"auto"}, ".mjx-row": {display:"table-row"}, ".mjx-cell": {display:"table-cell"}, ".mjx-table": {display:"table", width:"100%"},