From 5b1655a2fe6d058c8bc4dd64f376b2afc9d75078 Mon Sep 17 00:00:00 2001 From: "Davide P. Cervone" Date: Sun, 9 Feb 2014 05:52:24 -0500 Subject: [PATCH 1/3] Treat initial of split and multline (and other related environments) as infix (but remove initial space). Not sure this exactly matches LaTeX, but is closer than current behavior. Resolves issue #389. --- unpacked/extensions/TeX/AMSmath.js | 24 ++++++++++++++++++++++++ unpacked/extensions/toMathML.js | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/unpacked/extensions/TeX/AMSmath.js b/unpacked/extensions/TeX/AMSmath.js index d0407798b..3d146b6a9 100644 --- a/unpacked/extensions/TeX/AMSmath.js +++ b/unpacked/extensions/TeX/AMSmath.js @@ -453,6 +453,15 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () { stack.global.tagged = !numbered && !stack.global.forcetag; // prevent automatic tagging in starred environments }, EndEntry: function () { + for (var i = 0, m = this.data.length; i < m; i++) { + if (this.data[i] && this.data[i].type !== "mspace") { + if (this.data[i].isEmbellished()) { + var core = this.data[i].CoreMO(); + core.form = MML.FORM.INFIX; core.lspace = 0; + } + break; + } + } var mtd = MML.mtd.apply(MML,this.data); if (this.data.shove) {mtd.columnalign = this.data.shove} this.row.push(mtd); @@ -499,6 +508,21 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () { stack.global.notags = (taggable ? null : name); stack.global.tagged = !numbered && !stack.global.forcetag; // prevent automatic tagging in starred environments }, + EndEntry: function () { + if (this.row.length > 0) { + for (var i = 0, m = this.data.length; i < m; i++) { + if (this.data[i] && this.data[i].type !== "mspace") { + if (this.data[i].isEmbellished()) { + var core = this.data[i].CoreMO(); + core.form = MML.FORM.INFIX; core.lspace = 0; + } + break; + } + } + } + this.row.push(MML.mtd.apply(MML,this.data)); + this.data = []; + }, EndRow: function () { var mtr = MML.mtr; if (!this.global.tag && this.numbered) {this.autoTag()} diff --git a/unpacked/extensions/toMathML.js b/unpacked/extensions/toMathML.js index 20fb15a64..e26ea89c4 100644 --- a/unpacked/extensions/toMathML.js +++ b/unpacked/extensions/toMathML.js @@ -59,7 +59,7 @@ MathJax.Hub.Register.LoadHook("[MathJax]/jax/element/mml/jax.js",function () { if (!this.attrNames) { if (this.type === "mstyle") {defaults = MML.math.prototype.defaults} for (var id in defaults) {if (!skip[id] && defaults.hasOwnProperty(id)) { - var force = (id === "open" || id === "close"); + var force = (id === "open" || id === "close" || id === "form"); if (this[id] != null && (force || this[id] !== defaults[id])) { var value = this[id]; delete this[id]; if (force || this.Get(id) !== value) From 61f671710e5d1ca9118636cdfe2ff7a1940e2e21 Mon Sep 17 00:00:00 2001 From: "Davide P. Cervone" Date: Sun, 9 Feb 2014 06:20:23 -0500 Subject: [PATCH 2/3] Make routine to skip initial spaces, and have it also skip empty braces. Issue #389. --- unpacked/extensions/TeX/AMSmath.js | 40 +++++++++++++++--------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/unpacked/extensions/TeX/AMSmath.js b/unpacked/extensions/TeX/AMSmath.js index 3d146b6a9..62a105b07 100644 --- a/unpacked/extensions/TeX/AMSmath.js +++ b/unpacked/extensions/TeX/AMSmath.js @@ -438,6 +438,24 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () { } delete global.tag; delete global.tagID; delete global.label; return tag; + }, + + /* + * Set the initial to have form="infix" and lspace="0", + * skipping any initial space or empty braces (TeXAtom with child + * being an empty inferred row). + */ + fixInitialMO: function (data) { + for (var i = 0, m = data.length; i < m; i++) { + if (data[i] && (data[i].type !== "mspace" && + (data[i].type !== "texatom" || !data[i].data[0] || data[i].data[0].data.length))) { + if (data[i].isEmbellished()) { + var core = data[i].CoreMO(); + core.form = MML.FORM.INFIX; core.lspace = 0; + } + break; + } + } } }); @@ -453,15 +471,7 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () { stack.global.tagged = !numbered && !stack.global.forcetag; // prevent automatic tagging in starred environments }, EndEntry: function () { - for (var i = 0, m = this.data.length; i < m; i++) { - if (this.data[i] && this.data[i].type !== "mspace") { - if (this.data[i].isEmbellished()) { - var core = this.data[i].CoreMO(); - core.form = MML.FORM.INFIX; core.lspace = 0; - } - break; - } - } + if (this.table.length) {this.fixInitialMO(this.data)} var mtd = MML.mtd.apply(MML,this.data); if (this.data.shove) {mtd.columnalign = this.data.shove} this.row.push(mtd); @@ -509,17 +519,7 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () { stack.global.tagged = !numbered && !stack.global.forcetag; // prevent automatic tagging in starred environments }, EndEntry: function () { - if (this.row.length > 0) { - for (var i = 0, m = this.data.length; i < m; i++) { - if (this.data[i] && this.data[i].type !== "mspace") { - if (this.data[i].isEmbellished()) { - var core = this.data[i].CoreMO(); - core.form = MML.FORM.INFIX; core.lspace = 0; - } - break; - } - } - } + if (this.row.length) {this.fixInitialMO(this.data)} this.row.push(MML.mtd.apply(MML,this.data)); this.data = []; }, From dd59bcff82721f753d6cca26264d9b61914e957c Mon Sep 17 00:00:00 2001 From: "Davide P. Cervone" Date: Mon, 10 Feb 2014 08:43:18 -0500 Subject: [PATCH 3/3] Correct condition for skipping empty braces. --- unpacked/extensions/TeX/AMSmath.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unpacked/extensions/TeX/AMSmath.js b/unpacked/extensions/TeX/AMSmath.js index 62a105b07..cd8dfef99 100644 --- a/unpacked/extensions/TeX/AMSmath.js +++ b/unpacked/extensions/TeX/AMSmath.js @@ -448,7 +448,7 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () { fixInitialMO: function (data) { for (var i = 0, m = data.length; i < m; i++) { if (data[i] && (data[i].type !== "mspace" && - (data[i].type !== "texatom" || !data[i].data[0] || data[i].data[0].data.length))) { + (data[i].type !== "texatom" || (data[i].data[0] && data[i].data[0].data.length)))) { if (data[i].isEmbellished()) { var core = data[i].CoreMO(); core.form = MML.FORM.INFIX; core.lspace = 0;