From c17c4e6dfa954bb0761bb10abaf9deaf56ad5f4e Mon Sep 17 00:00:00 2001 From: Christian Perfect Date: Fri, 2 May 2014 15:44:58 +0100 Subject: [PATCH] content-mathml extension: load config from MathJax.Hub.Config Config is loaded from `MathML.content-mathml`, and extends the CToP.settings object. --- unpacked/extensions/MathML/content-mathml.js | 3130 +++++++++--------- 1 file changed, 1566 insertions(+), 1564 deletions(-) diff --git a/unpacked/extensions/MathML/content-mathml.js b/unpacked/extensions/MathML/content-mathml.js index 6e6c769e7..1d569b316 100644 --- a/unpacked/extensions/MathML/content-mathml.js +++ b/unpacked/extensions/MathML/content-mathml.js @@ -44,7 +44,7 @@ */ -MathJax.Extension["MathML/content-mathml"] = (function() { +MathJax.Extension["MathML/content-mathml"] = (function(HUB) { /* * Content MathML to Presentation MathML conversion * @@ -52,9 +52,7 @@ MathJax.Extension["MathML/content-mathml"] = (function() { * */ - var CToP = { - version: '2.4', - settings: { + var CONFIG = HUB.CombineConfig("MathML.content-mathml",{ // render `a+(-b)` as `a-b`? collapsePlusMinus: true, @@ -70,1566 +68,1570 @@ MathJax.Extension["MathML/content-mathml"] = (function() { "gamma": '\u03B3' } - }, - - /* Transform the given elements from Content MathML to Presentation MathML and replace the original elements - */ - transformElements: function(elements){ - for (var i = 0; i< elements.length;i++){ - var mathNode = CToP.transformElement(elements[i]); - elements[i].parentNode.replaceChild(mathNode,elements[i]); - } - }, - - /* Transform a Content MathML element into Presentation MathML, and return the new element - */ - transformElement: function(element) { - var mathNode = element.cloneNode(false); - for(var j=0;j1){ - CToP.applyTransform(mrow,args[0],tokenPrecedence); - } - CToP.appendToken(mrow,'mo',name); - if(args.length>0){ - var z = args[(args.length==1)?0:1]; - CToP.applyTransform(mrow,z,tokenPrecedence); - } - if(needsBrackets) { - CToP.appendToken(mrow,'mo',')'); - } - parentNode.appendChild(mrow); - } - }, - - /* Transform an infix operator - * - * (function factory) - */ - infix: function(name,tokenPrecedence) { - return function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - var mrow = CToP.createElement('mrow'); - var needsBrackets = precedence>tokenPrecedence; - if(needsBrackets) { - CToP.appendToken(mrow,'mo','('); - } - for(var j=0;j0) { - CToP.appendToken(mrow,'mo',name); - } - CToP.applyTransform(mrow,args[j],tokenPrecedence); - } - if(needsBrackets) { - CToP.appendToken(mrow,'mo',')'); - } - parentNode.appendChild(mrow); - } - }, - - /* Transform an iterated operation, e.g. summation - * - * (function factory - */ - iteration: function(name,limitSymbol) { - return function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - var mrow = CToP.createElement('mrow'); - var mo = CToP.createElement('mo'); - mo.textContent = name; - var munderover = CToP.createElement('munderover'); - munderover.appendChild(mo); - var mrow1 = CToP.createElement('mrow'); - for(var i=0; i',1), - "lt": CToP.transforms.infix('<',1), - "geq": CToP.transforms.infix('\u2265',1), - "leq": CToP.transforms.infix('\u2264',1), - "equivalent": CToP.transforms.infix('\u2261',1), - "approx": CToP.transforms.infix('\u2248',1), - "subset": CToP.transforms.infix('\u2286',2), - "prsubset": CToP.transforms.infix('\u2282',2), - "cartesianproduct": CToP.transforms.infix('\u00D7',2), - "cartesian_product": CToP.transforms.infix('\u00D7',2), - "vectorproduct": CToP.transforms.infix('\u00D7',2), - "scalarproduct": CToP.transforms.infix('.',2), - "outerproduct": CToP.transforms.infix('\u2297',2), - "sum": CToP.transforms.iteration('\u2211','='), - "product": CToP.transforms.iteration('\u220F','='), - "forall": CToP.transforms.bind('\u2200','.',','), - "exists": CToP.transforms.bind('\u2203','.',','), - "lambda": CToP.transforms.bind('\u03BB','.',','), - "limit": CToP.transforms.iteration('lim','\u2192'), - "sdev": CToP.transforms.fn('\u03c3'), - "determinant": CToP.transforms.fn('det'), - "max": CToP.transforms.minmax('max'), - "min": CToP.transforms.minmax('min'), - "real": CToP.transforms.fn('\u211b'), - "imaginary": CToP.transforms.fn('\u2111'), - "set": CToP.transforms.set('{','}'), - "list": CToP.transforms.set('(',')') -} -CToP.applyTokens['exp'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - var msup = CToP.createElement('msup'); - CToP.appendToken(msup,'mi','e'); - CToP.applyTransform(msup,args[0],0); - parentNode.appendChild(msup); -} - -CToP.applyTokens['union'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - if(bvars.length) { - CToP.transforms.iteration('\u22C3','=')(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence); - } else { - CToP.transforms.infix('\u222A',2)(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence); - } -} -CToP.applyTokens['intersect'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - if(bvars.length) { - CToP.transforms.iteration('\u22C2','=')(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence); - } else { - var mrow = CToP.createElement('mrow'); - var needsBrackets = precedence>2; - if(needsBrackets) { - CToP.appendToken(mrow,'mo','('); - } - for(var j=0;j0) { - CToP.appendToken(mrow,'mo','\u2229'); - if(args[j].localName=='apply') { - var child = CToP.getChildren(args[j])[0]; - argBrackets = child.localName == 'union'; - } - } - if(argBrackets) { - CToP.appendToken(mrow,'mo','('); - } - CToP.applyTransform(mrow,args[j],2); - if(argBrackets) { - CToP.appendToken(mrow,'mo',')'); - } - } - if(needsBrackets) { - CToP.appendToken(mrow,'mo',')'); - } - parentNode.appendChild(mrow); - } -} - -CToP.applyTokens['floor'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - var mrow = CToP.createElement('mrow'); - CToP.appendToken(mrow,'mo','\u230a'); - CToP.applyTransform(mrow,args[0],0); - CToP.appendToken(mrow,'mo','\u230b'); - parentNode.appendChild(mrow); -} -CToP.applyTokens['conjugate'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - var mover = CToP.createElement('mover'); - CToP.applyTransform(mover,args[0],0); - CToP.appendToken(mover,'mo','\u00af'); - parentNode.appendChild(mover); -} -CToP.applyTokens['abs'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - var mrow = CToP.createElement('mrow'); - CToP.appendToken(mrow,'mo','|'); - CToP.applyTransform(mrow,args[0],0); - CToP.appendToken(mrow,'mo','|'); - parentNode.appendChild(mrow); -} -CToP.applyTokens['and'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - if(bvars.length || qualifiers.length) { - CToP.transforms.iteration('\u22c0','=')(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,4); - } else { - CToP.transforms.infix('\u2227',2)(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence); - } -} -CToP.applyTokens['or'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - if(bvars.length || qualifiers.length) { - CToP.transforms.iteration('\u22c1','=')(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,4); - } else { - CToP.transforms.infix('\u2228',2)(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence); - } -} -CToP.applyTokens['xor'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - if(bvars.length || qualifiers.length) { - CToP.transforms.iteration('xor','=')(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,4); - } else { - CToP.transforms.infix('xor',2)(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence); - } -} -CToP.applyTokens['card'] = CToP.applyTokens['size'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - var mrow = CToP.createElement('mrow'); - CToP.appendToken(mrow,'mo','|'); - CToP.applyTransform(mrow,args[0],0); - CToP.appendToken(mrow,'mo','|'); - parentNode.appendChild(mrow); -} -CToP.applyTokens['mean'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - if(args.length==1) { - var mover = CToP.createElement('mover'); - CToP.applyTransform(mover,args[0],0); - CToP.appendToken(mover,'mo','\u00af'); - parentNode.appendChild(mover); - } else { - parentNode.appendChild(CToP.createmfenced(args,'\u27e8','\u27e9')); - } -} -CToP.applyTokens['moment'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - var degree,momentabout; - - for(var i=0; i1) { - argrow.appendChild(CToP.createmfenced(args,'(',')')); - } else { - CToP.applyTransform(argrow,args[0],0); - } - if(degree) { - var msup = CToP.createElement('msup'); - msup.appendChild(argrow); - var children = CToP.getChildren(degree); - for(var j=0;j3; - if(needsBrackets) { - CToP.appendToken(mrow,'mo','('); - } - for(var j=0;j0) { - CToP.appendToken(mrow,'mo',(args[j].localName=='cn') ? "\u00D7" :"\u2062"); - } - CToP.applyTransform(mrow,args[j],3); - } - if(needsBrackets) { - CToP.appendToken(mrow,'mo',')'); - } - parentNode.appendChild(mrow); -} - -CToP.applyTokens["plus"] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - var mrow = CToP.createElement('mrow'); - var needsBrackets = precedence>2; - if(needsBrackets) { - CToP.appendToken(mrow,'mo','('); - } - for(var j=0;j0) { - var n; - if(CToP.settings.collapsePlusMinus) { - if(arg.localName=='cn' && !(children.length) && (n=Number(arg.textContent)) <0) { - CToP.appendToken(mrow,'mo','\u2212'); - CToP.appendToken(mrow,'mn', -n); - } else if(arg.localName=='apply' && children.length==2 && children[0].localName=='minus') { - CToP.appendToken(mrow,'mo','\u2212'); - CToP.applyTransform(mrow,children[1],2); - } else if(arg.localName=='apply' && children.length>2 && children[0].localName=='times' && children[1].localName=='cn' && ( n=Number(children[1].textContent) < 0)) { - CToP.appendToken(mrow,'mo','\u2212'); - children[1].textContent=-n;// fix me: modifying document - CToP.applyTransform(mrow,arg,2); - } else{ - CToP.appendToken(mrow,'mo','+'); - CToP.applyTransform(mrow,arg,2); - } - } else { - CToP.appendToken(mrow,'mo','+'); - CToP.applyTransform(mrow,arg,2); - } - } else { - CToP.applyTransform(mrow,arg,2); - } - } - if(needsBrackets) { - CToP.appendToken(mrow,'mo',')'); - } - parentNode.appendChild(mrow); -} - -CToP.applyTokens['transpose'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - var msup = CToP.createElement('msup'); - CToP.applyTransform(msup,args[0],precedence); - CToP.appendToken(msup,'mi','T'); - parentNode.appendChild(msup); -} - -CToP.applyTokens['power'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - var msup = CToP.createElement('msup'); - CToP.applyTransform(msup,args[0],3); - CToP.applyTransform(msup,args[1],precedence); - parentNode.appendChild(msup); -} - -CToP.applyTokens['selector'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - var msub = CToP.createElement('msub'); - var mrow = args ? args[0]: CToP.createElement('mrow'); - CToP.applyTransform(msub,mrow,0); - var mrow2 = CToP.createElement('mrow'); - for(var i=1;i1){ - CToP.applyTransform(mrow,args[1],0); - } - } - CToP.appendToken(mrow,'mo','\u230B'); - parentNode.appendChild(mrow); -} - -CToP.applyTokens["factorial"] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - var mrow = CToP.createElement('mrow'); - CToP.applyTransform(mrow,args[0],4); - CToP.appendToken(mrow,'mo','!'); - parentNode.appendChild(mrow); -} - -CToP.applyTokens["root"] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { - var mr; - if(firstArg.localName=='root' && (qualifiers.length==0 || (qualifiers[0].localName=='degree' && qualifiers[0].textContent=='2'))){ - mr = CToP.createElement('msqrt'); - for(var i=0;i1) { - var msup = CToP.createElement('msup'); - CToP.applyTransform(msup,bvar,0); - CToP.appendToken(msup,'mn',degree); - bottomrow.appendChild(msup); - } else { - CToP.applyTransform(bottomrow,bvar,0); - } - } - for(var i=0;i0){ - if(hadFirst){ - CToP.appendToken(degreeRow,'mo','+'); - } - CToP.appendToken(degreeRow,'mn',degree); - } - } - - if(args.length){ - differendNode = args[0]; - } - - for(var i=0;i elements from Content MathML to Presentation MathML and replace the original elements + */ + transformElements: function(elements){ + for (var i = 0; i< elements.length;i++){ + var mathNode = CToP.transformElement(elements[i]); + elements[i].parentNode.replaceChild(mathNode,elements[i]); + } + }, + + /* Transform a Content MathML element into Presentation MathML, and return the new element + */ + transformElement: function(element) { + var mathNode = element.cloneNode(false); + for(var j=0;j1){ + CToP.applyTransform(mrow,args[0],tokenPrecedence); + } + CToP.appendToken(mrow,'mo',name); + if(args.length>0){ + var z = args[(args.length==1)?0:1]; + CToP.applyTransform(mrow,z,tokenPrecedence); + } + if(needsBrackets) { + CToP.appendToken(mrow,'mo',')'); + } + parentNode.appendChild(mrow); + } + }, + + /* Transform an infix operator + * + * (function factory) + */ + infix: function(name,tokenPrecedence) { + return function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + var mrow = CToP.createElement('mrow'); + var needsBrackets = precedence>tokenPrecedence; + if(needsBrackets) { + CToP.appendToken(mrow,'mo','('); + } + for(var j=0;j0) { + CToP.appendToken(mrow,'mo',name); + } + CToP.applyTransform(mrow,args[j],tokenPrecedence); + } + if(needsBrackets) { + CToP.appendToken(mrow,'mo',')'); + } + parentNode.appendChild(mrow); + } + }, + + /* Transform an iterated operation, e.g. summation + * + * (function factory + */ + iteration: function(name,limitSymbol) { + return function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + var mrow = CToP.createElement('mrow'); + var mo = CToP.createElement('mo'); + mo.textContent = name; + var munderover = CToP.createElement('munderover'); + munderover.appendChild(mo); + var mrow1 = CToP.createElement('mrow'); + for(var i=0; i',1), + "lt": CToP.transforms.infix('<',1), + "geq": CToP.transforms.infix('\u2265',1), + "leq": CToP.transforms.infix('\u2264',1), + "equivalent": CToP.transforms.infix('\u2261',1), + "approx": CToP.transforms.infix('\u2248',1), + "subset": CToP.transforms.infix('\u2286',2), + "prsubset": CToP.transforms.infix('\u2282',2), + "cartesianproduct": CToP.transforms.infix('\u00D7',2), + "cartesian_product": CToP.transforms.infix('\u00D7',2), + "vectorproduct": CToP.transforms.infix('\u00D7',2), + "scalarproduct": CToP.transforms.infix('.',2), + "outerproduct": CToP.transforms.infix('\u2297',2), + "sum": CToP.transforms.iteration('\u2211','='), + "product": CToP.transforms.iteration('\u220F','='), + "forall": CToP.transforms.bind('\u2200','.',','), + "exists": CToP.transforms.bind('\u2203','.',','), + "lambda": CToP.transforms.bind('\u03BB','.',','), + "limit": CToP.transforms.iteration('lim','\u2192'), + "sdev": CToP.transforms.fn('\u03c3'), + "determinant": CToP.transforms.fn('det'), + "max": CToP.transforms.minmax('max'), + "min": CToP.transforms.minmax('min'), + "real": CToP.transforms.fn('\u211b'), + "imaginary": CToP.transforms.fn('\u2111'), + "set": CToP.transforms.set('{','}'), + "list": CToP.transforms.set('(',')') + } + CToP.applyTokens['exp'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + var msup = CToP.createElement('msup'); + CToP.appendToken(msup,'mi','e'); + CToP.applyTransform(msup,args[0],0); + parentNode.appendChild(msup); + } + + CToP.applyTokens['union'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + if(bvars.length) { + CToP.transforms.iteration('\u22C3','=')(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence); + } else { + CToP.transforms.infix('\u222A',2)(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence); + } + } + CToP.applyTokens['intersect'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + if(bvars.length) { + CToP.transforms.iteration('\u22C2','=')(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence); + } else { + var mrow = CToP.createElement('mrow'); + var needsBrackets = precedence>2; + if(needsBrackets) { + CToP.appendToken(mrow,'mo','('); + } + for(var j=0;j0) { + CToP.appendToken(mrow,'mo','\u2229'); + if(args[j].localName=='apply') { + var child = CToP.getChildren(args[j])[0]; + argBrackets = child.localName == 'union'; + } + } + if(argBrackets) { + CToP.appendToken(mrow,'mo','('); + } + CToP.applyTransform(mrow,args[j],2); + if(argBrackets) { + CToP.appendToken(mrow,'mo',')'); + } + } + if(needsBrackets) { + CToP.appendToken(mrow,'mo',')'); + } + parentNode.appendChild(mrow); + } + } + + CToP.applyTokens['floor'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + var mrow = CToP.createElement('mrow'); + CToP.appendToken(mrow,'mo','\u230a'); + CToP.applyTransform(mrow,args[0],0); + CToP.appendToken(mrow,'mo','\u230b'); + parentNode.appendChild(mrow); + } + CToP.applyTokens['conjugate'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + var mover = CToP.createElement('mover'); + CToP.applyTransform(mover,args[0],0); + CToP.appendToken(mover,'mo','\u00af'); + parentNode.appendChild(mover); + } + CToP.applyTokens['abs'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + var mrow = CToP.createElement('mrow'); + CToP.appendToken(mrow,'mo','|'); + CToP.applyTransform(mrow,args[0],0); + CToP.appendToken(mrow,'mo','|'); + parentNode.appendChild(mrow); + } + CToP.applyTokens['and'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + if(bvars.length || qualifiers.length) { + CToP.transforms.iteration('\u22c0','=')(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,4); + } else { + CToP.transforms.infix('\u2227',2)(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence); + } + } + CToP.applyTokens['or'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + if(bvars.length || qualifiers.length) { + CToP.transforms.iteration('\u22c1','=')(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,4); + } else { + CToP.transforms.infix('\u2228',2)(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence); + } + } + CToP.applyTokens['xor'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + if(bvars.length || qualifiers.length) { + CToP.transforms.iteration('xor','=')(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,4); + } else { + CToP.transforms.infix('xor',2)(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence); + } + } + CToP.applyTokens['card'] = CToP.applyTokens['size'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + var mrow = CToP.createElement('mrow'); + CToP.appendToken(mrow,'mo','|'); + CToP.applyTransform(mrow,args[0],0); + CToP.appendToken(mrow,'mo','|'); + parentNode.appendChild(mrow); + } + CToP.applyTokens['mean'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + if(args.length==1) { + var mover = CToP.createElement('mover'); + CToP.applyTransform(mover,args[0],0); + CToP.appendToken(mover,'mo','\u00af'); + parentNode.appendChild(mover); + } else { + parentNode.appendChild(CToP.createmfenced(args,'\u27e8','\u27e9')); + } + } + CToP.applyTokens['moment'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + var degree,momentabout; + + for(var i=0; i1) { + argrow.appendChild(CToP.createmfenced(args,'(',')')); + } else { + CToP.applyTransform(argrow,args[0],0); + } + if(degree) { + var msup = CToP.createElement('msup'); + msup.appendChild(argrow); + var children = CToP.getChildren(degree); + for(var j=0;j3; + if(needsBrackets) { + CToP.appendToken(mrow,'mo','('); + } + for(var j=0;j0) { + CToP.appendToken(mrow,'mo',(args[j].localName=='cn') ? "\u00D7" :"\u2062"); + } + CToP.applyTransform(mrow,args[j],3); + } + if(needsBrackets) { + CToP.appendToken(mrow,'mo',')'); + } + parentNode.appendChild(mrow); + } + + CToP.applyTokens["plus"] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + var mrow = CToP.createElement('mrow'); + var needsBrackets = precedence>2; + if(needsBrackets) { + CToP.appendToken(mrow,'mo','('); + } + for(var j=0;j0) { + var n; + if(CToP.settings.collapsePlusMinus) { + if(arg.localName=='cn' && !(children.length) && (n=Number(arg.textContent)) <0) { + CToP.appendToken(mrow,'mo','\u2212'); + CToP.appendToken(mrow,'mn', -n); + } else if(arg.localName=='apply' && children.length==2 && children[0].localName=='minus') { + CToP.appendToken(mrow,'mo','\u2212'); + CToP.applyTransform(mrow,children[1],2); + } else if(arg.localName=='apply' && children.length>2 && children[0].localName=='times' && children[1].localName=='cn' && ( n=Number(children[1].textContent) < 0)) { + CToP.appendToken(mrow,'mo','\u2212'); + children[1].textContent=-n;// fix me: modifying document + CToP.applyTransform(mrow,arg,2); + } else{ + CToP.appendToken(mrow,'mo','+'); + CToP.applyTransform(mrow,arg,2); + } + } else { + CToP.appendToken(mrow,'mo','+'); + CToP.applyTransform(mrow,arg,2); + } + } else { + CToP.applyTransform(mrow,arg,2); + } + } + if(needsBrackets) { + CToP.appendToken(mrow,'mo',')'); + } + parentNode.appendChild(mrow); + } + + CToP.applyTokens['transpose'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + var msup = CToP.createElement('msup'); + CToP.applyTransform(msup,args[0],precedence); + CToP.appendToken(msup,'mi','T'); + parentNode.appendChild(msup); + } + + CToP.applyTokens['power'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + var msup = CToP.createElement('msup'); + CToP.applyTransform(msup,args[0],3); + CToP.applyTransform(msup,args[1],precedence); + parentNode.appendChild(msup); + } + + CToP.applyTokens['selector'] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + var msub = CToP.createElement('msub'); + var mrow = args ? args[0]: CToP.createElement('mrow'); + CToP.applyTransform(msub,mrow,0); + var mrow2 = CToP.createElement('mrow'); + for(var i=1;i1){ + CToP.applyTransform(mrow,args[1],0); + } + } + CToP.appendToken(mrow,'mo','\u230B'); + parentNode.appendChild(mrow); + } + + CToP.applyTokens["factorial"] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + var mrow = CToP.createElement('mrow'); + CToP.applyTransform(mrow,args[0],4); + CToP.appendToken(mrow,'mo','!'); + parentNode.appendChild(mrow); + } + + CToP.applyTokens["root"] = function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) { + var mr; + if(firstArg.localName=='root' && (qualifiers.length==0 || (qualifiers[0].localName=='degree' && qualifiers[0].textContent=='2'))){ + mr = CToP.createElement('msqrt'); + for(var i=0;i1) { + var msup = CToP.createElement('msup'); + CToP.applyTransform(msup,bvar,0); + CToP.appendToken(msup,'mn',degree); + bottomrow.appendChild(msup); + } else { + CToP.applyTransform(bottomrow,bvar,0); + } + } + for(var i=0;i0){ + if(hadFirst){ + CToP.appendToken(degreeRow,'mo','+'); + } + CToP.appendToken(degreeRow,'mn',degree); + } + } + + if(args.length){ + differendNode = args[0]; + } + + for(var i=0;i