move mathml support files outside document root
[lambda.git] / jsMath / extensions / eqn-number.js
diff --git a/jsMath/extensions/eqn-number.js b/jsMath/extensions/eqn-number.js
deleted file mode 100644 (file)
index be98db7..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- *  extensions/eqn-number.js
- *  
- *  Part of the jsMath package for mathematics on the web.
- *
- *  This file causes jsMath to add equation numbers to displayed
- *  equations.  These are displayed at the right, but the styles can
- *  be controlled through the jsMath.EqnNumber object.  Equations
- *  are numbered if they include a \label{xxx} call, and the macro
- *  \ref{xxx} can be used to refer to the equation number elsewhere
- *  in the document (it must appear by itself in a math formula,
- *  e.g., $\ref{xxx}$).  The "label-ref" CSS style can be used to
- *  style the references.
- *  
- *  If jsMath.EqnNumber.autonumber is set to 1, then ALL displayed
- *  equations will be numberd.  Use the \nolabel macro to prevent
- *  equation numbering on an equation.
- *  
- *  You can activate eqn-numbering by calling
- *  
- *    jsMath.Extension.Require('eqn-number');
- *    
- *  once jsMath.js has been loaded, or by adding "extensions/eqn-number.js"
- *  to the loadFiles array in jsMath/easy/load.js.
- *  
- *  ---------------------------------------------------------------------
- *
- *  Copyright 2008 by Davide P. Cervone
- * 
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-/********************************************************************/
-
-if (jsMath.EqnNumber) {jsMath.EqnNumber_old = jsMath.EqnNumber}
-
-jsMath.EqnNumber = {
-  
-  styles: {
-    '.jsMath_displayBox, .tex2math_div': {position: 'relative'},
-    '.jsMath_number': {
-        position: 'absolute',
-        right: '2em', top: '50%', 'margin-top': '-.5em',
-        height: 'auto', width: 'auto'
-    },
-    '.jsMath_ref': {'text-decoration': 'none'}
-  },
-
-  autonumber: 0,  // set to 1 to have ALL equations numbered
-
-  number: 0,
-  format: function (n) {return n},
-  formatLabel: function (n) {return '<A NAME="eqn-'+n+'">('+n+')</A>'},
-  formatRef: function (n) {return '(<A CLASS="jsMath_ref" HREF="#eqn-'+n+'">'+n+'</A>)'},
-  
-  _label: null,   // flag set when \label{x} is used
-  _labels: {},    // stores label-name => label-value pairs
-  _refs: {},      // stores elements referring to undefined labels
-  _nolabel: 0,    // set by \nolabel
-  
-  nextNumber: function () {
-    var ref = this.format(++this.number);
-    if (this._label) {
-      this._labels[this._label] = ref;
-      if (this._refs[this._label]) this.fixRefs(this._label);
-    }
-    return this.formatLabel(ref);
-  },
-  
-  isRef: function (element) {
-    var tex = element.innerHTML;
-    var result = tex.match(/^\s*\\ref\s*\{([^\}]+)\}\s*$/);
-    if (!result) {return 0}
-    var ref = result[1];
-    if (this._labels[ref]) {
-      this.setRef(element,ref);
-    } else {
-      if (!this._refs[ref]) {this._refs[ref] = []}
-      this._refs[ref][this._refs[ref].length] = element;
-    }
-    return 1;
-  },
-  
-  setRef: function (element,ref) {
-    element.innerHTML = this.formatRef(this._labels[ref]);
-    element.className = "label-ref";
-  },
-  
-  fixRefs: function (label) {
-    for (var i = 0; i < this._refs[label].length; i++)
-      {this.setRef(this._refs[label][i],label)}
-    delete this._refs[label];
-  },
-  
-  badRefs: function () {
-    for (var label in this._refs) {
-      for (var i = 0; i < this._refs[label].length; i++) {
-        var element = this._refs[label][i];
-        element.className = "typeset";
-        element.innerHTML = "<span class='error'>Reference '"+label+"' is undefined</span>";
-      }
-    }
-  },
-  
-  makeDIV: function (element) {
-    var div = document.createElement('div');
-    div.className = 'jsMath_displayBox';
-    div.innerHTML = '<div class="jsMath_number">' + this.nextNumber() + '</div>';
-    element.parentNode.insertBefore(div,element);
-    element.parentNode.removeChild(element);
-    div.appendChild(element);
-  },
-  
-  makeSPAN: function (element) {
-    var span = document.createElement('span');
-    span.className = 'jsMath_number';
-    span.style.display = 'inline-block';
-    span.innerHTML = jsMath.EqnNumber.nextNumber();
-    element.parentNode.insertBefore(span,element);
-  },
-
-  ConvertMath: function (style,element,nocache) {
-    var EqnNumber = jsMath.EqnNumber;
-    if (EqnNumber.isRef(element)) return;
-    EqnNumber._label = null; EqnNumber._nolabel = 0;
-    this.ConvertMath_old(style,element,nocache);
-    if (EqnNumber._label || (EqnNumber.autonumber && !EqnNumber._nolabel)) {
-      if (element.tagName.toLowerCase() == 'div') {
-        EqnNumber.makeDIV(element);
-      } else if (element.parentNode.className == 'tex2math_div') {
-        EqnNumber.makeSPAN(element);
-      }
-    }
-  },
-  
-  ProcessComplete: function () {
-    jsMath.EqnNumber.badRefs();
-    this.ProcessComplete_old.apply(this,arguments);
-  },
-  
-  Init: function () {
-    jsMath.Setup.Styles(this.styles);
-    jsMath.Translate.ConvertMath_old = jsMath.Translate.ConvertMath;
-    jsMath.Translate.ConvertMath = this.ConvertMath;
-    jsMath.Translate.ProcessComplete_old = jsMath.Translate.ProcessComplete;
-    jsMath.Translate.ProcessComplete = this.ProcessComplete;
-  },
-  
-  environments: {
-    'equation*': 'Star',
-    'eqnarray*': 'Star',
-    'align*':    'Star',
-    'multline*': 'Star',
-    'gather*':   'Star',
-    align:       ['StarExtension','AMSmath'],
-    multline:    ['StarExtension','AMSmath'],
-    gather:      ['StarExtension','AMSmath']
-  },
-  
-  ResetStarEnvironments: function () {
-    var Nenv = jsMath.EqnNumber.environments;
-    var Penv = jsMath.Parser.prototype.environments;
-    for (var name in Nenv) {
-      if (name.match(/\*$/)) {Penv[name] = Nenv[name]}
-    }
-  }
-
-};
-
-if (jsMath.EqnNumber_old) {
-  jsMath.Insert(jsMath.EqnNumber,jsMath.EqnNumber_old);
-  delete jsMath.EqnNumber_old;
-}
-
-jsMath.Package(jsMath.Parser,{
-  macros: {
-    label:    'Label',
-    nolabel:  'NoLabel',
-    nonumber: 'NoLabel',
-    ref:      'Ref'
-  },
-  
-  environments: jsMath.EqnNumber.environments,
-  
-  Label: function (name) {
-    var label = this.GetArgument(this.cmd+name); if (this.error) return;
-    var EqnNumber = jsMath.EqnNumber;
-    if (!EqnNumber._label) {
-      if (!EqnNumber._labels[label]) {
-        EqnNumber._label = label;
-        EqnNumber._nolabel = 0;
-      } else {
-        this.Error("Label '"+label+"' is already defined");
-      }
-    } else {
-      this.Error(this.cmd+name+' can only be used once in an equation');
-    }
-  },
-  
-  NoLabel: function (name) {
-    var EqnNumber = jsMath.EqnNumber;
-    EqnNumber._label = null; EqnNumber._nolabel = 1;
-  },
-  
-  Ref: function (name) {
-    this.Error(this.cmd+name+' must be used by itself');
-  },
-  
-  Star: function (name) {
-    this.NoLabel();
-    var cmd = this.environments[name.substr(0,name.length-1)];
-    if (typeof(cmd) === 'string') {cmd = [cmd]}
-    this[cmd[0]](name,cmd.slice(1));
-  },
-  
-  StarExtension: function (name,data) {
-    try {this.Extension(name,data)} catch (e) {}
-    jsMath.Synchronize(jsMath.EqnNumber.ResetStarEnvironments);
-    throw "restart";
-  }
-
-});
-
-jsMath.EqnNumber.Init();