Math/modules/MathJax/jax/input/TeX/jax.js

17 lines
48 KiB
JavaScript
Raw Normal View History

/*
* /MathJax/jax/input/TeX/jax.js
*
* Copyright (c) 2009-2013 The MathJax Consortium
*
* Part of the MathJax library.
* See http://www.mathjax.org for details.
*
* Licensed under the Apache License, Version 2.0;
* you may not use this file except in compliance with the License.
*
* http://www.apache.org/licenses/LICENSE-2.0
*/
(function(d,c,i){var h,g="\u00A0";var j=function(l){return MathJax.Localization._.apply(MathJax.Localization,[["TeX",l]].concat([].slice.call(arguments,1)))};var e=MathJax.Object.Subclass({Init:function(m,l){this.global={isInner:l};this.data=[b.start(this.global)];if(m){this.data[0].env=m}this.env=this.data[0].env},Push:function(){var n,l,o,p;for(n=0,l=arguments.length;n<l;n++){o=arguments[n];if(o instanceof h.mbase){o=b.mml(o)}o.global=this.global;p=(this.data.length?this.Top().checkItem(o):true);if(p instanceof Array){this.Pop();this.Push.apply(this,p)}else{if(p instanceof b){this.Pop();this.Push(p)}else{if(p){this.data.push(o);if(o.env){for(var q in this.env){if(this.env.hasOwnProperty(q)){o.env[q]=this.env[q]}}this.env=o.env}else{o.env=this.env}}}}}},Pop:function(){var l=this.data.pop();if(!l.isOpen){delete l.env}this.env=(this.data.length?this.Top().env:{});return l},Top:function(l){if(l==null){l=1}if(this.data.length<l){return null}return this.data[this.data.length-l]},Prev:function(l){var m=this.Top();if(l){return m.data[m.data.length-1]}else{return m.Pop()}},toString:function(){return"stack[\n "+this.data.join("\n ")+"\n]"}});var b=e.Item=MathJax.Object.Subclass({type:"base",endError:["ExtraOpenMissingClose","Extra open brace or missing close brace"],closeError:["ExtraCloseMissingOpen","Extra close brace or missing open brace"],rightError:["MissingLeftExtraRight","Missing \\left or extra \\right"],Init:function(){if(this.isOpen){this.env={}}this.data=[];this.Push.apply(this,arguments)},Push:function(){this.data.push.apply(this.data,arguments)},Pop:function(){return this.data.pop()},mmlData:function(l,m){if(l==null){l=true}if(this.data.length===1&&!m){return this.data[0]}return h.mrow.apply(h,this.data).With((l?{inferred:true}:{}))},checkItem:function(l){if(l.type==="over"&&this.isOpen){l.num=this.mmlData(false);this.data=[]}if(l.type==="cell"&&this.isOpen){if(l.linebreak){return false}d.Error(["Misplaced","Misplaced %1",l.name])}if(l.isClose&&this[l.type+"Error"]){d.Error(this[l.type+"Error"])}if(!l.isNotStack){return true}this.Push(l.data[0]);return false},With:function(l){for(var m in l){if(l.hasOwnProperty(m)){this[m]=l[m]}}return this},toString:function(){return this.type+"["+this.data.join("; ")+"]"}});b.start=b.Subclass({type:"start",isOpen:true,Init:function(l){this.SUPER(arguments).Init.call(this);this.global=l},checkItem:function(l){if(l.type==="stop"){return b.mml(this.mmlData())}return this.SUPER(arguments).checkItem.call(this,l)}});b.stop=b.Subclass({type:"stop",isClose:true});b.open=b.Subclass({type:"open",isOpen:true,stopError:["ExtraOpenMissingClose","Extra open brace or missing close brace"],checkItem:function(m){if(m.type==="close"){var l=this.mmlData();return b.mml(h.TeXAtom(l))}return this.SUPER(arguments).checkItem.call(this,m)}});b.close=b.Subclass({type:"close",isClose:true});b.prime=b.Subclass({type:"prime",checkItem:function(l){if(this.data[0].type!=="msubsup"){return[h.msup(this.data[0],this.data[1]),l]}this.data[0].SetData(this.data[0].sup,this.data[1]);return[this.data[0],l]}});b.subsup=b.Subclass({type:"subsup",stopError:["MissingScript","Missing superscript or subscript argument"],supError:["MissingOpenForSup","Missing open brace for superscript"],subError:["MissingOpenForSup","Missing open brace for subscript"],checkItem:function(l){if(l.type==="open"||l.type==="left"){return true}if(l.type==="mml"){if(this.primes){if(this.position!==2){this.data[0].SetData(2,this.primes)}else{l.data[0]=h.mrow(this.primes.With({variantForm:true}),l.data[0])}}this.data[0].SetData(this.position,l.data[0]);return b.mml(this.data[0])}if(this.SUPER(arguments).checkItem.call(this,l)){d.Error(this[["","subError","supError"][this.position]])}},Pop:function(){}});b.over=b.Subclass({type:"over",isClose:true,name:"\\over",checkItem:function(n,l){if(n.type==="over"){d.Error(["AmbiguousUseOf","Ambiguous use of %1",n.name])}if(n.isClose){var m=h.mfrac(this.num,this.mmlData(false));if(this.thickness!=null){m.linethickness=this.thickness}if(this.open||this.close){m.texClass=h.TEXCLASS.INNER;m.texWithDelims=true;m