commit 641d6698e8e11d6c08f2c6818eb79b6ee1c3fa89
parent 7bf7ffef3d9dc703987ae147e4013eece38a9b77
Author: Davide P. Cervone <dpvc@union.edu>
Date: Tue, 11 Feb 2014 10:36:02 -0500
Make mfenced match mrow+mo form, and make U+2223 and U+2225 stretchy in pre- and postfix positions (to match Firefox). Resolves issue #478.
Diffstat:
1 file changed, 23 insertions(+), 6 deletions(-)
diff --git a/unpacked/jax/element/mml/jax.js b/unpacked/jax/element/mml/jax.js
@@ -601,8 +601,12 @@ MathJax.ElementJax.mml.Augment({
isEmbellished: function () {return true},
hasNewline: function () {return (this.Get("linebreak") === MML.LINEBREAK.NEWLINE)},
setTeXclass: function (prev) {
- this.getValues("lspace","rspace"); // sets useMMLspacing
+ var values = this.getValues("form","lspace","rspace","fence"); // sets useMMLspacing
if (this.useMMLspacing) {this.texClass = MML.TEXCLASS.NONE; return this}
+ if (values.fence && !this.texClass) {
+ if (values.form === MML.FORM.PREFIX) {this.texClass = MML.TEXCLASS.OPEN}
+ if (values.form === MML.FORM.POSTFIX) {this.texClass = MML.TEXCLASS.CLOSE}
+ }
this.texClass = this.Get("texClass");
if (this.data.join("") === "\u2061") {
// force previous node to be texClass OP, and skip this node
@@ -908,7 +912,11 @@ MathJax.ElementJax.mml.Augment({
values.separators = values.separators.replace(/[ \t\n\r]/g,"");
// create a fake node for the open item
if (values.open !== "") {
- this.SetData("open",MML.mo(values.open).With({stretchy:true, texClass:MML.TEXCLASS.OPEN}));
+ this.SetData("open",MML.mo(values.open).With({
+ fence:true, form:MML.FORM.PREFIX, texClass:MML.TEXCLASS.OPEN
+ }));
+ // Clear flag for using MML spacing even though form is specified
+ this.data.open.useMMLspacing &= ~this.data.open.SPACE_ATTR.form;
prev = this.data.open.setTeXclass(prev);
}
// get the separators
@@ -922,7 +930,7 @@ MathJax.ElementJax.mml.Augment({
for (var i = 1, m = this.data.length; i < m; i++) {
if (this.data[i]) {
if (values.separators !== "") {
- this.SetData("sep"+i,MML.mo(values.separators.charAt(i-1)));
+ this.SetData("sep"+i,MML.mo(values.separators.charAt(i-1)).With({separator:true}));
prev = this.data["sep"+i].setTeXclass(prev);
}
prev = this.data[i].setTeXclass(prev);
@@ -930,7 +938,11 @@ MathJax.ElementJax.mml.Augment({
}
// create fake node for the close item
if (values.close !== "") {
- this.SetData("close",MML.mo(values.close).With({stretchy:true, texClass:MML.TEXCLASS.CLOSE}));
+ this.SetData("close",MML.mo(values.close).With({
+ fence:true, form:MML.FORM.POSTFIX, texClass:MML.TEXCLASS.CLOSE
+ }));
+ // Clear flag for using MML spacing even though form is specified
+ this.data.close.useMMLspacing &= ~this.data.close.SPACE_ATTR.form;
prev = this.data.close.setTeXclass(prev);
}
// get the data from the open item
@@ -1693,8 +1705,13 @@ MathJax.ElementJax.mml.Augment({
// These are not in the W3C table, but FF works this way,
// and it makes sense, so add it here
//
- MML.mo.prototype.OPTABLE.infix["^"] = MO.WIDEREL;
- MML.mo.prototype.OPTABLE.infix["_"] = MO.WIDEREL;
+ var OPTABLE = MML.mo.prototype.OPTABLE;
+ OPTABLE.infix["^"] = MO.WIDEREL;
+ OPTABLE.infix["_"] = MO.WIDEREL;
+ OPTABLE.prefix["\u2223"] = MO.OPEN;
+ OPTABLE.prefix["\u2225"] = MO.OPEN;
+ OPTABLE.postfix["\u2223"] = MO.CLOSE;
+ OPTABLE.postfix["\u2225"] = MO.CLOSE;
})(MathJax.ElementJax.mml);