home *** CD-ROM | disk | FTP | other *** search
/ Freelog 121 / FreelogMagazineJuilletAout2014-No121.iso / Bureautique / calibre / calibre-1.35.0.msi / file_600 < prev    next >
Text File  |  2013-05-28  |  4KB  |  96 lines

  1. /*************************************************************
  2.  *
  3.  *  MathJax/extensions/jsMath2jax.js
  4.  *  
  5.  *  Implements a jsMath to Jax preprocessor that locates jsMath-style
  6.  *  <SPAN CLASS="math">...</SPAN> and <DIV CLASS="math">...</DIV> tags
  7.  *  and replaces them with SCRIPT tags for processing by MathJax.
  8.  *  (Note: use the tex2jax preprocessor to convert TeX delimiters or 
  9.  *  custom delimiters to MathJax SCRIPT tags.  This preprocessor is
  10.  *  only for the SPAN and DIV form of jsMath delimiters).
  11.  *  
  12.  *  To use this preprocessor, include "jsMath2jax.js" in the extensions
  13.  *  array in your config/MathJax.js file, or the MathJax.Hub.Config() call
  14.  *  in your HTML document.
  15.  *
  16.  *  ---------------------------------------------------------------------
  17.  *  
  18.  *  Copyright (c) 2010-2012 Design Science, Inc.
  19.  * 
  20.  *  Licensed under the Apache License, Version 2.0 (the "License");
  21.  *  you may not use this file except in compliance with the License.
  22.  *  You may obtain a copy of the License at
  23.  * 
  24.  *      http://www.apache.org/licenses/LICENSE-2.0
  25.  * 
  26.  *  Unless required by applicable law or agreed to in writing, software
  27.  *  distributed under the License is distributed on an "AS IS" BASIS,
  28.  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  29.  *  See the License for the specific language governing permissions and
  30.  *  limitations under the License.
  31.  */
  32.  
  33. MathJax.Extension.jsMath2jax = {
  34.   version: "2.0",
  35.   
  36.   config: {
  37.     preview: "TeX"    // Set to "none" to prevent preview strings from being inserted
  38.                       //   or to an array that specifies an HTML snippet to use for
  39.                       //   the preview.
  40.   },
  41.   
  42.   PreProcess: function (element) {
  43.     if (!this.configured) {
  44.       this.config = MathJax.Hub.CombineConfig("jsMath2jax",this.config);
  45.       if (this.config.Augment) {MathJax.Hub.Insert(this,this.config.Augment)}
  46.       if (typeof(this.config.previewTeX) !== "undefined" && !this.config.previewTeX)
  47.         {this.config.preview = "none"} // backward compatibility for previewTeX parameter
  48.       this.previewClass = MathJax.Hub.config.preRemoveClass;
  49.       this.configured = true;
  50.     }
  51.     if (typeof(element) === "string") {element = document.getElementById(element)}
  52.     if (!element) {element = document.body}
  53.     var span = element.getElementsByTagName("span"), i;
  54.     for (i = span.length-1; i >= 0; i--)
  55.       {if (String(span[i].className).match(/(^| )math( |$)/)) {this.ConvertMath(span[i],"")}}
  56.     var div = element.getElementsByTagName("div");
  57.     for (i = div.length-1; i >= 0; i--)
  58.       {if (String(div[i].className).match(/(^| )math( |$)/)) {this.ConvertMath(div[i],"; mode=display")}}
  59.   },
  60.   
  61.   ConvertMath: function (node,mode) {
  62.     if (node.getElementsByTagName("script").length === 0) {
  63.       var parent = node.parentNode,
  64.           script = this.createMathTag(mode,node.innerHTML);
  65.       if (node.nextSibling) {parent.insertBefore(script,node.nextSibling)}
  66.         else {parent.appendChild(script)}
  67.       if (this.config.preview !== "none") {this.createPreview(node)}
  68.       parent.removeChild(node);
  69.     }
  70.   },
  71.   
  72.   createPreview: function (node) {
  73.     var preview;
  74.     if (this.config.preview === "TeX") {preview = [this.filterPreview(node.innerHTML)]}
  75.     else if (this.config.preview instanceof Array) {preview = this.config.preview}
  76.     if (preview) {
  77.       preview = MathJax.HTML.Element("span",{className: MathJax.Hub.config.preRemoveClass},preview);
  78.       node.parentNode.insertBefore(preview,node);
  79.     }
  80.   },
  81.   
  82.   createMathTag: function (mode,tex) {
  83.     tex = tex.replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&");
  84.     var script = document.createElement("script");
  85.     script.type = "math/tex" + mode;
  86.     MathJax.HTML.setScript(script,tex);
  87.     return script;
  88.   },
  89.   
  90.   filterPreview: function (tex) {return tex}
  91.   
  92. };
  93.  
  94. MathJax.Hub.Register.PreProcessor(["PreProcess",MathJax.Extension.jsMath2jax]);
  95. MathJax.Ajax.loadComplete("[MathJax]/extensions/jsMath2jax.js");
  96.