diff --git a/filter/mathjaxloader/filter.php b/filter/mathjaxloader/filter.php
new file mode 100644
index 00000000000..c0248fe1925
--- /dev/null
+++ b/filter/mathjaxloader/filter.php
@@ -0,0 +1,146 @@
+.
+
+/**
+ * This filter provides automatic support for MathJax
+ *
+ * @package filter_mathjaxloader
+ * @copyright 2013 Damyon Wiese (damyon@moodle.com)
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+/**
+ * Mathjax filtering
+ */
+class filter_mathjaxloader extends moodle_text_filter {
+
+ /*
+ * Perform a mapping of the moodle language code to the equivalent for MathJax.
+ *
+ * @param string $moodlelangcode - The moodle language code - e.g. en_pirate
+ * @return string The MathJax language code.
+ */
+ public function map_language_code($moodlelangcode) {
+ $mathjaxlangcodes = array('br',
+ 'cdo',
+ 'cs',
+ 'da',
+ 'de',
+ 'en',
+ 'eo',
+ 'es',
+ 'fa',
+ 'fi',
+ 'fr',
+ 'gl',
+ 'he',
+ 'ia',
+ 'it',
+ 'ja',
+ 'ko',
+ 'lb',
+ 'mk',
+ 'nl',
+ 'oc',
+ 'pl',
+ 'pt',
+ 'pt-br',
+ 'ru',
+ 'sl',
+ 'sv',
+ 'tr',
+ 'uk',
+ 'zh-hans');
+ $exceptions = array('cz' => 'cs');
+
+ // First see if this is an exception.
+ if (isset($exceptions[$moodlelangcode])) {
+ $moodlelangcode = $exceptions[$moodlelangcode];
+ }
+
+ // Now look for an exact lang string match.
+ if (in_array($moodlelangcode, $mathjaxlangcodes)) {
+ return $moodlelangcode;
+ }
+
+ // Now try shortening the moodle lang string.
+ $moodlelangcode = preg_replace('/-.*/', '', $moodlelangcode);
+ // Look for a match on the shortened string.
+ if (in_array($moodlelangcode, $mathjaxlangcodes)) {
+ return $moodlelangcode;
+ }
+ // All failed - use english.
+ return 'en';
+ }
+
+ /*
+ * Add the javascript to enable mathjax processing on this page.
+ *
+ * @param moodle_page $page The current page.
+ * @param context $context The current context.
+ */
+ public function lazy_init() {
+ global $CFG, $PAGE;
+ // This only requires execution once per request.
+ static $jsinitialised = false;
+
+ if (empty($jsinitialised)) {
+ if (strpos($CFG->httpswwwroot, 'https:') === 0) {
+ $url = get_config('filter_mathjaxloader', 'httpsurl');
+ } else {
+ $url = get_config('filter_mathjaxloader', 'httpurl');
+ }
+ $lang = $this->map_language_code(current_language());
+ $url = new moodle_url($url, array('delayStartupUntil' => 'configured'));
+
+ $moduleconfig = array(
+ 'name' => 'mathjax',
+ 'fullpath' => $url
+ );
+
+ $PAGE->requires->js_module($moduleconfig);
+
+ $config = get_config('filter_mathjaxloader', 'mathjaxconfig');
+
+ $params = array('mathjaxconfig' => $config, 'lang' => $lang);
+
+ $PAGE->requires->yui_module('moodle-filter_mathjaxloader-loader', 'M.filter_mathjaxloader.init', array($params));
+
+ $jsinitialised = true;
+ }
+ }
+
+ /*
+ * This function wraps the filtered text in a span, that mathjaxloader is configured to process.
+ *
+ * @param string $text The text to filter.
+ * @param array $options The filter options.
+ */
+ public function filter($text, array $options = array()) {
+ // This replaces blah syntax with [tex] blah [/tex] syntax
+ // because MathJax cannot handle html tags as delimiters.
+
+ $text = preg_replace('|<(/?) *tex( [^>]*)?>|u', '[\1tex]', $text);
+ if (strpos($text, '$$') !== false || strpos($text, '\\[') !== false || strpos($text, '[tex]') !== false) {
+ // Only call init if there is at least one equation on the page.
+ $this->lazy_init();
+ return '' . $text . '';
+ }
+ return $text;
+ }
+}
diff --git a/filter/mathjaxloader/lang/en/filter_mathjaxloader.php b/filter/mathjaxloader/lang/en/filter_mathjaxloader.php
new file mode 100644
index 00000000000..3327778b507
--- /dev/null
+++ b/filter/mathjaxloader/lang/en/filter_mathjaxloader.php
@@ -0,0 +1,38 @@
+.
+
+/**
+ * Strings for component 'filter_mathjax', language 'en'.
+ *
+ * Note: use filter/mathjax/cli/update_lang_files.php script to import strings from upstream JS lang files.
+ *
+ * @package filter_mathjax
+ * @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com}
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+
+//== Custom Moodle strings that are not part of upstream MathJax ==
+$string['filtername'] = 'MathJax';
+$string['httpurl'] = 'HTTP MathJax URL';
+$string['httpurl_help'] = 'Full URL to MathJax library. Used when the page is loaded via http.';
+$string['httpsurl'] = 'HTTP MathJax URL';
+$string['httpsurl_help'] = 'Full URL to MathJax library. Used when the page is loaded via https (secure). ';
+$string['localinstall'] = 'Local MathJax installation';
+$string['localinstall_help'] = 'The default MathJAX configuration uses the CDN version of MathJAX, but MathJAX can be installed locally if required. Some reasons this might be useful are to save on bandwidth - or because of local proxy restrictions. To use a local installation of MathJAX, first download the full MathJax library from http://www.mathjax.org/. Then install it on a web server. Finally update the MathJax filter settings httpurl and/or httpsurl to point to the local MathJax.js url.';
+$string['mathjaxsettings'] = 'MathJax configuration';
+$string['mathjaxsettings_desc'] = 'The default MathJAX configuration should be appropriate for most users, but MathJax is highly configurable and advanced users may want to provide a different configuration. More information on MathJax configuration options is available here: http://docs.mathjax.org/en/latest/options/index.html';
+
diff --git a/filter/mathjaxloader/readme_moodle.txt b/filter/mathjaxloader/readme_moodle.txt
new file mode 100644
index 00000000000..76355a381b1
--- /dev/null
+++ b/filter/mathjaxloader/readme_moodle.txt
@@ -0,0 +1,15 @@
+Description of MathJAX library integration in Moodle
+=========================================================================================
+
+License: Apache 2.0
+Source: http://www.mathjax.org
+
+Moodle maintainer: Damyon Wiese
+
+=========================================================================================
+This library is not shipped with Moodle, but this filter is provided, which can be used to
+correctly load MathJax into a page from the CDN. Alternatively you can download the entire
+library and install it locally, then use this filter to load that local version.
+
+The only changes required to this filter to handle different MathJax versions is to update
+the CDN urls in filter.php - and update the list of language mappings - also in filter.php.
diff --git a/filter/mathjaxloader/settings.php b/filter/mathjaxloader/settings.php
new file mode 100644
index 00000000000..fa9be8da383
--- /dev/null
+++ b/filter/mathjaxloader/settings.php
@@ -0,0 +1,86 @@
+.
+
+/**
+ * MathJAX filter settings
+ *
+ * @package filter_mathjaxloader
+ * @copyright 2014 Damyon Wiese
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die;
+
+if ($ADMIN->fulltree) {
+ $item = new admin_setting_heading('filter_mathjaxloader/localinstall',
+ new lang_string('localinstall', 'filter_mathjaxloader'),
+ new lang_string('localinstall_help', 'filter_mathjaxloader'));
+ $settings->add($item);
+
+ $item = new admin_setting_configtext('filter_mathjaxloader/httpurl',
+ new lang_string('httpurl', 'filter_mathjaxloader'),
+ new lang_string('httpurl_help', 'filter_mathjaxloader'),
+ 'http://cdn.mathjax.org/mathjax/2.3-latest/MathJax.js',
+ PARAM_RAW);
+ $settings->add($item);
+
+ $item = new admin_setting_configtext('filter_mathjaxloader/httpsurl',
+ new lang_string('httpsurl', 'filter_mathjaxloader'),
+ new lang_string('httpsurl_help', 'filter_mathjaxloader'),
+ 'https://c328740.ssl.cf1.rackcdn.com/mathjax/2.3-latest/MathJax.js',
+ PARAM_RAW);
+ $settings->add($item);
+
+ $default = '
+MathJax.Hub.Config({
+ config: ["MMLorHTML.js", "Safe.js"],
+ jax: ["input/TeX","input/MathML","output/HTML-CSS","output/NativeMML"],
+ extensions: ["tex2jax.js","mml2jax.js","MathMenu.js","MathZoom.js"],
+ TeX: {
+ extensions: ["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"]
+ },
+ menuSettings: {
+ zoom: "Double-Click",
+ mpContext: true,
+ mpMouse: true
+ },
+ errorSettings: { message: ["!"] },
+ tex2jax: {
+ skipTags: ["script","noscript","style","textarea"],
+ inlineMath: [
+ ["\\\\(","\\\\)"],
+ ["$$","$$"],
+ ["\\\\[","\\\\]"]
+ ],
+ displayMath: [
+ ["[tex]","[/tex]"],
+ ],
+ balanceBraces: true,
+ preview: "TeX"
+ },
+ skipStartupTypeset: true,
+ messageStyle: "none"
+});
+';
+
+ $item = new admin_setting_configtextarea('filter_mathjaxloader/mathjaxconfig',
+ new lang_string('mathjaxsettings','filter_mathjaxloader'),
+ new lang_string('mathjaxsettings_desc', 'filter_mathjaxloader'),
+ $default);
+
+ $settings->add($item);
+
+}
diff --git a/filter/mathjaxloader/styles.css b/filter/mathjaxloader/styles.css
new file mode 100644
index 00000000000..f09529267e9
--- /dev/null
+++ b/filter/mathjaxloader/styles.css
@@ -0,0 +1,3 @@
+.jsenabled #MathJax_ZoomFrame {
+ position: absolute;
+}
diff --git a/filter/mathjaxloader/version.php b/filter/mathjaxloader/version.php
new file mode 100644
index 00000000000..666c4b8572c
--- /dev/null
+++ b/filter/mathjaxloader/version.php
@@ -0,0 +1,29 @@
+.
+
+/**
+ * MathJax filter version information
+ *
+ * @package filter_mathjaxloader
+ * @copyright 2014 Damyon Wiese (damyon@moodle.com)
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+$plugin->version = 2013110500;
+$plugin->requires = 2013110500; // Requires this Moodle version
+$plugin->component= 'filter_mathjaxloader';
diff --git a/filter/mathjaxloader/yui/build/moodle-filter_mathjax-loader/moodle-filter_mathjax-loader-debug.js b/filter/mathjaxloader/yui/build/moodle-filter_mathjax-loader/moodle-filter_mathjax-loader-debug.js
new file mode 100644
index 00000000000..a2df1208ebf
--- /dev/null
+++ b/filter/mathjaxloader/yui/build/moodle-filter_mathjax-loader/moodle-filter_mathjax-loader-debug.js
@@ -0,0 +1,46 @@
+YUI.add('moodle-filter_mathjax-loader', function (Y, NAME) {
+
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle. If not, see .
+
+/**
+ * Mathjax JS Loader.
+ *
+ * @package filter_mathjax
+ * @copyright 2014 Damyon Wiese
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+M.filter_mathjax = M.filter_mathjax || {
+ init : function(params) {
+ // Add an inline configuration tag to the head.
+ var config = Y.Node.create('');
+ config.setHTML(params.mathjaxconfig);
+ Y.one('head').append(config);
+ // Load the mathjax library.
+ Y.Get.js(params.mathjaxurl, function() {
+ // Tell mathjax to call back for the language files.
+ debugger;
+ MathJax.Localization.addTranslation(params.lang,null,{
+ menuTitle: params.langdescription,
+ directory: M.cfg.wwwroot + "/filter/mathjax/language.php?lang="
+ });
+ });
+
+
+ }
+};
+
+
+}, '@VERSION@', {"requires": ["get", "node"]});
diff --git a/filter/mathjaxloader/yui/build/moodle-filter_mathjax-loader/moodle-filter_mathjax-loader-min.js b/filter/mathjaxloader/yui/build/moodle-filter_mathjax-loader/moodle-filter_mathjax-loader-min.js
new file mode 100644
index 00000000000..6970a0f8d52
--- /dev/null
+++ b/filter/mathjaxloader/yui/build/moodle-filter_mathjax-loader/moodle-filter_mathjax-loader-min.js
@@ -0,0 +1 @@
+YUI.add("moodle-filter_mathjax-loader",function(e,t){M.filter_mathjax=M.filter_mathjax||{init:function(t){var n=e.Node.create('');n.setHTML(t.mathjaxconfig),e.one("head").append(n),e.Get.js(t.mathjaxurl,function(){debugger;MathJax.Localization.addTranslation(t.lang,null,{menuTitle:t.langdescription,directory:M.cfg.wwwroot+"/filter/mathjax/language.php?lang="})})}}},"@VERSION@",{requires:["get","node"]});
diff --git a/filter/mathjaxloader/yui/build/moodle-filter_mathjax-loader/moodle-filter_mathjax-loader.js b/filter/mathjaxloader/yui/build/moodle-filter_mathjax-loader/moodle-filter_mathjax-loader.js
new file mode 100644
index 00000000000..a2df1208ebf
--- /dev/null
+++ b/filter/mathjaxloader/yui/build/moodle-filter_mathjax-loader/moodle-filter_mathjax-loader.js
@@ -0,0 +1,46 @@
+YUI.add('moodle-filter_mathjax-loader', function (Y, NAME) {
+
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle. If not, see .
+
+/**
+ * Mathjax JS Loader.
+ *
+ * @package filter_mathjax
+ * @copyright 2014 Damyon Wiese
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+M.filter_mathjax = M.filter_mathjax || {
+ init : function(params) {
+ // Add an inline configuration tag to the head.
+ var config = Y.Node.create('');
+ config.setHTML(params.mathjaxconfig);
+ Y.one('head').append(config);
+ // Load the mathjax library.
+ Y.Get.js(params.mathjaxurl, function() {
+ // Tell mathjax to call back for the language files.
+ debugger;
+ MathJax.Localization.addTranslation(params.lang,null,{
+ menuTitle: params.langdescription,
+ directory: M.cfg.wwwroot + "/filter/mathjax/language.php?lang="
+ });
+ });
+
+
+ }
+};
+
+
+}, '@VERSION@', {"requires": ["get", "node"]});
diff --git a/filter/mathjaxloader/yui/build/moodle-filter_mathjaxloader-loader/moodle-filter_mathjaxloader-loader-debug.js b/filter/mathjaxloader/yui/build/moodle-filter_mathjaxloader-loader/moodle-filter_mathjaxloader-loader-debug.js
new file mode 100644
index 00000000000..8cea37eca0c
--- /dev/null
+++ b/filter/mathjaxloader/yui/build/moodle-filter_mathjaxloader-loader/moodle-filter_mathjaxloader-loader-debug.js
@@ -0,0 +1,45 @@
+YUI.add('moodle-filter_mathjaxloader-loader', function (Y, NAME) {
+
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle. If not, see .
+
+/**
+ * Mathjax JS Loader.
+ *
+ * @package filter_mathjaxloader
+ * @copyright 2014 Damyon Wiese
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+M.filter_mathjaxloader = M.filter_mathjaxloader || {
+ init: function(params) {
+
+ // Add a js configuration object to the head.
+ // See "http://docs.mathjax.org/en/latest/dynamic.html#ajax-mathjax"
+ var script = document.createElement("script");
+ script.type = "text/x-mathjax-config";
+ script[(window.opera ? "innerHTML" : "text")] = params.mathjaxconfig;
+ document.getElementsByTagName("head")[0].appendChild(script);
+
+ MathJax.Localization.setLocale(params.lang);
+
+ Y.all('.filter_mathjaxloader_equation').each(function(node) {
+ MathJax.Hub.Queue(["Typeset",MathJax.Hub,node.getDOMNode()]);
+ });
+ MathJax.Hub.Configured();
+ }
+};
+
+
+}, '@VERSION@', {"requires": ["mathjax"]});
diff --git a/filter/mathjaxloader/yui/build/moodle-filter_mathjaxloader-loader/moodle-filter_mathjaxloader-loader-min.js b/filter/mathjaxloader/yui/build/moodle-filter_mathjaxloader-loader/moodle-filter_mathjaxloader-loader-min.js
new file mode 100644
index 00000000000..1dffab905e5
--- /dev/null
+++ b/filter/mathjaxloader/yui/build/moodle-filter_mathjaxloader-loader/moodle-filter_mathjaxloader-loader-min.js
@@ -0,0 +1 @@
+YUI.add("moodle-filter_mathjaxloader-loader",function(e,t){M.filter_mathjaxloader=M.filter_mathjaxloader||{init:function(t){var n=document.createElement("script");n.type="text/x-mathjax-config",n[window.opera?"innerHTML":"text"]=t.mathjaxconfig,document.getElementsByTagName("head")[0].appendChild(n),MathJax.Localization.setLocale(t.lang),e.all(".filter_mathjaxloader_equation").each(function(e){MathJax.Hub.Queue(["Typeset",MathJax.Hub,e.getDOMNode()])}),MathJax.Hub.Configured()}}},"@VERSION@",{requires:["mathjax"]});
diff --git a/filter/mathjaxloader/yui/build/moodle-filter_mathjaxloader-loader/moodle-filter_mathjaxloader-loader.js b/filter/mathjaxloader/yui/build/moodle-filter_mathjaxloader-loader/moodle-filter_mathjaxloader-loader.js
new file mode 100644
index 00000000000..8cea37eca0c
--- /dev/null
+++ b/filter/mathjaxloader/yui/build/moodle-filter_mathjaxloader-loader/moodle-filter_mathjaxloader-loader.js
@@ -0,0 +1,45 @@
+YUI.add('moodle-filter_mathjaxloader-loader', function (Y, NAME) {
+
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle. If not, see .
+
+/**
+ * Mathjax JS Loader.
+ *
+ * @package filter_mathjaxloader
+ * @copyright 2014 Damyon Wiese
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+M.filter_mathjaxloader = M.filter_mathjaxloader || {
+ init: function(params) {
+
+ // Add a js configuration object to the head.
+ // See "http://docs.mathjax.org/en/latest/dynamic.html#ajax-mathjax"
+ var script = document.createElement("script");
+ script.type = "text/x-mathjax-config";
+ script[(window.opera ? "innerHTML" : "text")] = params.mathjaxconfig;
+ document.getElementsByTagName("head")[0].appendChild(script);
+
+ MathJax.Localization.setLocale(params.lang);
+
+ Y.all('.filter_mathjaxloader_equation').each(function(node) {
+ MathJax.Hub.Queue(["Typeset",MathJax.Hub,node.getDOMNode()]);
+ });
+ MathJax.Hub.Configured();
+ }
+};
+
+
+}, '@VERSION@', {"requires": ["mathjax"]});
diff --git a/filter/mathjaxloader/yui/src/loader/build.json b/filter/mathjaxloader/yui/src/loader/build.json
new file mode 100644
index 00000000000..b262702bd16
--- /dev/null
+++ b/filter/mathjaxloader/yui/src/loader/build.json
@@ -0,0 +1,10 @@
+{
+ "name": "moodle-filter_mathjaxloader-loader",
+ "builds": {
+ "moodle-filter_mathjaxloader-loader": {
+ "jsfiles": [
+ "loader.js"
+ ]
+ }
+ }
+}
diff --git a/filter/mathjaxloader/yui/src/loader/js/loader.js b/filter/mathjaxloader/yui/src/loader/js/loader.js
new file mode 100644
index 00000000000..92adb06b0b1
--- /dev/null
+++ b/filter/mathjaxloader/yui/src/loader/js/loader.js
@@ -0,0 +1,40 @@
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle. If not, see .
+
+/**
+ * Mathjax JS Loader.
+ *
+ * @package filter_mathjaxloader
+ * @copyright 2014 Damyon Wiese
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+M.filter_mathjaxloader = M.filter_mathjaxloader || {
+ init: function(params) {
+
+ // Add a js configuration object to the head.
+ // See "http://docs.mathjax.org/en/latest/dynamic.html#ajax-mathjax"
+ var script = document.createElement("script");
+ script.type = "text/x-mathjax-config";
+ script[(window.opera ? "innerHTML" : "text")] = params.mathjaxconfig;
+ document.getElementsByTagName("head")[0].appendChild(script);
+
+ MathJax.Localization.setLocale(params.lang);
+
+ Y.all('.filter_mathjaxloader_equation').each(function(node) {
+ MathJax.Hub.Queue(["Typeset",MathJax.Hub,node.getDOMNode()]);
+ });
+ MathJax.Hub.Configured();
+ }
+};
diff --git a/filter/mathjaxloader/yui/src/loader/meta/loader.json b/filter/mathjaxloader/yui/src/loader/meta/loader.json
new file mode 100644
index 00000000000..a8ce1960842
--- /dev/null
+++ b/filter/mathjaxloader/yui/src/loader/meta/loader.json
@@ -0,0 +1,7 @@
+{
+ "moodle-filter_mathjaxloader-loader": {
+ "requires": [
+ "mathjax"
+ ]
+ }
+}