diff --git a/Math.php b/Math.php index d5d295e..c85bdb9 100644 --- a/Math.php +++ b/Math.php @@ -314,7 +314,13 @@ $wgResourceModules += array( 'ext.math.mathjax.extensions.TeX' => array( 'localBasePath' => __DIR__ . '/modules/MathJax/unpacked/extensions', 'remoteExtPath' => 'Math/modules/MathJax/unpacked/extensions', - 'scripts' => array( 'wiki2jax.js', 'TeX/noUndefined.js', 'TeX/AMSmath.js', 'TeX/AMSsymbols.js', 'TeX/boldsymbol.js', 'TeX/color.js', 'TeX/cancel.js', 'TeX/mathchoice.js', 'TeX/texvc.js' ), + 'scripts' => array( 'TeX/noUndefined.js', 'TeX/AMSmath.js', 'TeX/AMSsymbols.js', 'TeX/boldsymbol.js', 'TeX/color.js', 'TeX/cancel.js', 'TeX/mathchoice.js' ), + 'dependencies' => array( 'ext.math.mathjax.mathjax' ) + ), + 'ext.math.mathjax.extensions.mediawiki' => array( + 'localBasePath' => __DIR__ . '/modules/mediawiki-extensions', + 'remoteExtPath' => 'Math/modules/mediawiki-extensions', + 'scripts' => array( 'wiki2jax.js', 'texvc.js' ), 'dependencies' => array( 'ext.math.mathjax.mathjax' ) ), 'ext.math.mathjax.extensions.mml2jax' => array( @@ -324,7 +330,7 @@ $wgResourceModules += array( 'dependencies' => 'ext.math.mathjax.mathjax' ), 'ext.math.mathjax.extensions' => array( - 'dependencies' => array( 'ext.math.mathjax.extensions.ui', 'ext.math.mathjax.extensions.TeX', 'ext.math.mathjax.extensions.mml2jax' ) + 'dependencies' => array( 'ext.math.mathjax.extensions.ui', 'ext.math.mathjax.extensions.TeX', 'ext.math.mathjax.extensions.mediawiki', 'ext.math.mathjax.extensions.mml2jax' ) ), // MathJax module for representing MathML elements diff --git a/modules/ext.math.mathjax.enabler.js b/modules/ext.math.mathjax.enabler.js index ec56d1e..17d2ae0 100644 --- a/modules/ext.math.mathjax.enabler.js +++ b/modules/ext.math.mathjax.enabler.js @@ -104,7 +104,8 @@ // Configure MathJax MathJax.Hub.Config( mathJax.config ); MathJax.OutputJax.fontDir = mw.config.get( 'wgExtensionAssetsPath' ) + '/Math/modules/MathJax/fonts'; - + MathJax.Ajax.config.path = {}; + MathJax.Ajax.config.path.MediaWiki = mw.config.get( 'wgServer' ) + mw.config.get( 'wgExtensionAssetsPath' ) + 'Math/modules/mediawiki-extensions'; // Redefine MathJax.Hub.Startup.Jax MathJax.Hub.Startup.Jax = function () { var config, jax, i, k, name, queue, callback; diff --git a/modules/MathJax/unpacked/extensions/TeX/texvc.js b/modules/mediawiki-extensions/texvc.js similarity index 96% rename from modules/MathJax/unpacked/extensions/TeX/texvc.js rename to modules/mediawiki-extensions/texvc.js index 9561ac5..d47c235 100644 --- a/modules/MathJax/unpacked/extensions/TeX/texvc.js +++ b/modules/mediawiki-extensions/texvc.js @@ -1,9 +1,9 @@ /** * From https://en.wikipedia.org/wiki/User:Nageh/mathJax/config/TeX-AMS-texvc_HTML.js */ +/* global MathJax:true */ -MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () { - var VERSION = "1.0"; +MathJax.Hub.Register.StartupHook('TeX Jax Ready',function () { var MML = MathJax.ElementJax.mml; @@ -131,6 +131,6 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () { }); }); -MathJax.Hub.Startup.signal.Post("TeX texvc Ready"); +MathJax.Hub.Startup.signal.Post('TeX texvc Ready'); -MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/texvc.js"); +MathJax.Ajax.loadComplete(MathJax.Ajax.config.path.MediaWiki + '/texvc.js'); diff --git a/modules/MathJax/unpacked/extensions/wiki2jax.js b/modules/mediawiki-extensions/wiki2jax.js similarity index 51% rename from modules/MathJax/unpacked/extensions/wiki2jax.js rename to modules/mediawiki-extensions/wiki2jax.js index 6520b6a..f567535 100644 --- a/modules/MathJax/unpacked/extensions/wiki2jax.js +++ b/modules/mediawiki-extensions/wiki2jax.js @@ -1,9 +1,10 @@ /** * From https://en.wikipedia.org/wiki/User:Nageh/mathJax/config/TeX-AMS-texvc_HTML.js */ +/* global MathJax:true, $:true */ MathJax.Extension.wiki2jax = { - version: "1.0", + version: '1.0', config: { element: null // The ID of the element to be processed @@ -12,8 +13,8 @@ MathJax.Extension.wiki2jax = { PreProcess: function (element) { if (!this.configured) { - this.config = MathJax.Hub.CombineConfig("wiki2jax", this.config); - if (this.config.Augment) {MathJax.Hub.Insert(this,this.config.Augment)} + this.config = MathJax.Hub.CombineConfig('wiki2jax', this.config); + if (this.config.Augment) {MathJax.Hub.Insert(this,this.config.Augment);} this.previewClass = MathJax.Hub.config.preRemoveClass; this.setupPrefilter(); @@ -27,47 +28,48 @@ MathJax.Extension.wiki2jax = { }, setupPrefilter: function() { // used to fix a number of common wiki math hacks - MathJax.Hub.Register.StartupHook("TeX Jax Ready", function() { + MathJax.Hub.Register.StartupHook('TeX Jax Ready', function() { MathJax.InputJax.TeX.prefilterHooks.Add( function(data) { - data.math = data.math.replace(/^\s*\\scriptstyle(\W)/,"\\textstyle$1").replace(/^\s*\\scriptscriptstyle(\W)/,"\\scriptstyle$1"); - if (data.script.type.match(/(;|\s|\n)mode\s*=\s*display-nobreak(;|\s|\n|$)/) != null) - data.math = "\\displaystyle " + data.math; + data.math = data.math.replace(/^\s*\\scriptstyle(\W)/,'\\textstyle$1').replace(/^\s*\\scriptscriptstyle(\W)/,'\\scriptstyle$1'); + if (data.script.type.match(/(;|\s|\n)mode\s*=\s*display-nobreak(;|\s|\n|$)/) !== null) { + data.math = '\\displaystyle ' + data.math; + } }); }); }, ConvertMath: function (node) { var parent = node.parentNode, - mode = "", //Bug 61051 (heuristic unwanted by the community) + mode = '', //Bug 61051 (heuristic unwanted by the community) tex; - if (node.nodeName == 'IMG') { + if (node.nodeName === 'IMG') { tex = node.alt; } else { - if (node.nodeName == 'STRONG') { - tex = $(node).text().replace(/^[^:]*: (.*)$/,"$1"); + if (node.nodeName === 'STRONG') { + tex = $(node).text().replace(/^[^:]*: (.*)$/,'$1'); } else { - tex = $(node).text().replace(/^\$/,"").replace(/\$$/,""); + tex = $(node).text().replace(/^\$/,'').replace(/\$$/,''); } - tex = tex.replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&").replace(/ /g," "); + tex = tex.replace(/</g,'<').replace(/>/g,'>').replace(/&/g,'&').replace(/ /g,' '); } - if ( $( node ).hasClass( "mwe-math-fallback-png-display") || $( node ).hasClass( "mwe-math-fallback-source-display") ){ - mode = "; mode=display"; + if ( $( node ).hasClass( 'mwe-math-fallback-png-display') || $( node ).hasClass( 'mwe-math-fallback-source-display') ){ + mode = '; mode=display'; } // We don't allow comments (%) in texvc and escape all literal % by default. - tex = tex.replace(/([^\\])%/g, "$1\\%" ); + tex = tex.replace(/([^\\])%/g, '$1\\%' ); - tex = tex.replace(/\\iiint([^!]*)!\\!\\!\\!\\!.*\\subset\\!\\supset/g,"\\iiint$1mkern-2.5em\\subset\\!\\supset").replace(/\\iint([^!]*)!\\!\\!\\!\\!\\!\\!\\!\\!\\!\\!(.*)\\subset\\!\\supset/g,"\\iint$1mkern-1.65em$2\\subset\\!\\!\\supset").replace(/\\int\\!\\!\\!(\\!)+\\int\\!\\!\\!(\\!)+\\int([^!]*)!\\!\\!\\!\\!.*\\bigcirc(\\,)*/g,"\\iiint$3mkern-2.5em\\subset\\!\\supset").replace(/\\int\\!\\!\\!(\\!)+\\int([^!]*)!\\!\\!\\!\\!\\!\\!\\!\\!(.*)\\bigcirc(\\,)*/g,"\\iint$2mkern-1.65em$3\\subset\\!\\!\\supset"); + tex = tex.replace(/\\iiint([^!]*)!\\!\\!\\!\\!.*\\subset\\!\\supset/g,'\\iiint$1mkern-2.5em\\subset\\!\\supset').replace(/\\iint([^!]*)!\\!\\!\\!\\!\\!\\!\\!\\!\\!\\!(.*)\\subset\\!\\supset/g,'\\iint$1mkern-1.65em$2\\subset\\!\\!\\supset').replace(/\\int\\!\\!\\!(\\!)+\\int\\!\\!\\!(\\!)+\\int([^!]*)!\\!\\!\\!\\!.*\\bigcirc(\\,)*/g,'\\iiint$3mkern-2.5em\\subset\\!\\supset').replace(/\\int\\!\\!\\!(\\!)+\\int([^!]*)!\\!\\!\\!\\!\\!\\!\\!\\!(.*)\\bigcirc(\\,)*/g,'\\iint$2mkern-1.65em$3\\subset\\!\\!\\supset'); - if (mode === "" && parent.firstChild === node) mode = "; mode=display-nobreak"; + if (mode === '' && parent.firstChild === node) {mode = '; mode=display-nobreak';} - var script = document.createElement("script"); - script.type = "math/tex" + mode; + var script = document.createElement('script'); + script.type = 'math/tex' + mode; MathJax.HTML.setScript(script, tex); - if (node.nextSibling) {parent.insertBefore(script,node.nextSibling)} - else {parent.appendChild(script)} + if (node.nextSibling) {parent.insertBefore(script,node.nextSibling);} + else {parent.appendChild(script);} - var preview = MathJax.HTML.Element("span", { + var preview = MathJax.HTML.Element('span', { className: MathJax.Hub.config.preRemoveClass }); preview.appendChild(parent.removeChild(node)); @@ -76,5 +78,5 @@ MathJax.Extension.wiki2jax = { }; -MathJax.Hub.Register.PreProcessor(["PreProcess",MathJax.Extension.wiki2jax]); -MathJax.Ajax.loadComplete("[MathJax]/extensions/wiki2jax.js"); +MathJax.Hub.Register.PreProcessor(['PreProcess',MathJax.Extension.wiki2jax]); +MathJax.Ajax.loadComplete(MathJax.Ajax.config.path.MediaWiki + '/wiki2jax.js');