Separating MediaWiki specific files from MathJax module
This commit separates the files wiki2jax.js and texvc.js from the MathJax modules. This allows for MathJax updates without affecting MediaWiki files. It also defines the MediaWiki path configuration, although this will really only be usable in MathJax 2.4. Finally, it fixes jshint errors in texvc.js and wiki2jax.js Moved texvc.js and wiki2jax.js to extensions/Math/modules/mediawiki-extensions directory Change-Id: I97d68c0555bc9fbdd6bf42912aa249d57b3d9359
This commit is contained in:
parent
84829af1eb
commit
639d8a766f
10
Math.php
10
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
|
||||
|
@ -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;
|
||||
|
@ -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');
|
@ -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');
|
Loading…
Reference in New Issue
Block a user