← Back to team overview

mahara-contributors team mailing list archive

[Bug 1464858] [NEW] Add MathJax and mhchem support to Mahara

 

Public bug reported:

MathJax has become the de facto standard for displaying mathematical
equations on the Web. The mhchem extension to MathJax provides
additional support for chemical equations. The addition of these would
allow Mahara to better support STEM subjects. MathJax is already
supported by recent versions of Moodle where it provides an alternative
to server-side TeX filters.

The following is a fairly minimalist implementation. More sophisticated
admin/configuration could be added.

1. Add a checkbox to /htdocs/admin/site/options.php:

Around line 113 add:

                'mathjax' => array(
                    'type'         => 'checkbox',
                    'title'        => get_string('mathjax', 'admin'),
                    'description'  => get_string('mathjaxdescription', 'admin'),
                    'defaultvalue' => get_config('mathjax'),
                    'help'         => true,
                    'disabled'     => in_array('mathjax', $OVERRIDDEN),
                ),

Around line 763 add mathjax to the $fields array to give:

    $fields = array(
        'sitename','lang','theme', 'dropdownmenu',
        'defaultaccountlifetime', 'defaultregistrationexpirylifetime', 'defaultaccountinactiveexpire', 'defaultaccountinactivewarn',
        'defaultaccountlifetimeupdate', 'allowpublicviews', 'allowpublicprofiles', 'allowanonymouspages', 'generatesitemap',
        'registration_sendweeklyupdates', 'mathjax', 'institutionexpirynotification', 'institutionautosuspend', 'requireregistrationconfirm',
        'showselfsearchsideblock', 'searchusernames', 'searchplugin', 'showtagssideblock',
        'tagssideblockmaxtags', 'country', 'viewmicroheaders', 'userscanchooseviewthemes',
        'remoteavatars', 'userscanhiderealnames', 'antispam', 'spamhaus', 'surbl', 'anonymouscomments',
        'recaptchaonregisterform', 'recaptchapublickey', 'recaptchaprivatekey', 'loggedinprofileviewaccess', 'disableexternalresources',
        'proxyaddress', 'proxyauthmodel', 'proxyauthcredentials', 'smtphosts', 'smtpport', 'smtpuser', 'smtppass', 'smtpsecure',
        'noreplyaddress', 'homepageinfo', 'showprogressbar', 'showonlineuserssideblock', 'onlineuserssideblockmaxusers',
        'registerterms', 'licensemetadata', 'licenseallowcustom', 'allowmobileuploads', 'creategroups', 'createpublicgroups', 'allowgroupcategories', 'wysiwyg',
        'staffreports', 'staffstats', 'userscandisabledevicedetection', 'watchlistnotification_delay',
        'masqueradingreasonrequired', 'masqueradingnotified', 'searchuserspublic',
        'eventloglevel', 'eventlogexpiry', 'sitefilesaccess', 'exporttoqueue',
    );

2 Add  $CFG->mathjaxpath and $CFG->mathjaxconfig to the end of /lib/config-default.php:
   
 /**
 * @global string $cfg->mathjaxpath Determines the path to CDN or server-local installation of MathJax.js.
 * If MathJax is enabled, use to configure path to MathJax.
 */
$cfg->mathjaxpath = '//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML&delayStartupUntil=configured';

/**
 * @global string $cfg->mathjaxconfig Determines MathJax configuration options.
 * The default MathJax configuration should be appropriate for most users, but MathJax is highly configurable
 * and any of the standard MathJax configuration options can be added here.
 */
$cfg->mathjaxconfig = '
MathJax.Hub.Config({
TeX:{extensions: ["mhchem.js"]}
});
MathJax.Hub.Configured();
';

NB the protocol-neutral MathJax URL should work with either http: or
https: Mahara sites.

3. Add the following to htdocs/lib/web.php immediately before TinyMCE is
first included around line 111:

    if (get_config('mathjax')) {
        $headers[] = '<script>'.get_config('mathjaxconfig').'</script>';
    }

and just after $javascript_array[] = $jsroot . 'keyboardNavigation.js';
around line 280 add:

    if (get_config('mathjax')) {
        $javascript_array[] = get_config('mathjaxpath');
    }

4. To /lang/en.utf8/admin.php add:

$string['mathjax'] = 'Enable MathJax';
$string['mathjaxdescription'] = 'MathJax enables mathematical and science equations to be displayed';
$string['mathjaxconfig'] = 'MathJax configuration';

5 Create /lang/en.utf8/help/forms/siteoptions.mathjax.html with the
content:

<!-- @license http://www.gnu.org/copyleft/gpl.html GNU GPL version 3 or later -->
<!-- @copyright For copyright information on Mahara, please see the README file distributed with this software. -->
<h3>MathJax</h3> 
MathJax is a JavaScript display engine for TeX, LaTeX, AsciiMath and MathMl notation which allows mathematics and science equations to be displayed in Mahara pages.
<p>MathJax allows the display of equations throughout your Mahara installation.</p>
<h4>MathJax URL</h4>
<p>The default configuration uses the latest stable version on the MathJax Content Distribution Network (CDN). http and https protocols may be used, as appopriate.</p>
<p>Alternatively, $cfg->mathjaxpath may use a local server installation of MathJax. See <a href="http://docs.mathjax.org/en/latest/installation.html";>http://docs.mathjax.org/en/latest/installation.html</a></p>
<p>The default includes a commonly used configuration allowing input of MathML, AsciiMath, TeX or LaTeX and processing to MathML or HTML-CSS</p>
<h4>MathJax additional configuration</h4>
<p>Additional MathJax configuration can be added to $cfg->mathjaxconfig. The default MathJax configuration should be appropriate for most users, but MathJax is highly configurable and any of the standard MathJax configuration options can be added here.</p>
<p>By default, includes the mhchem extension which adds the \ce macro for chemical formulae. See <a href="http://docs.mathjax.org/en/latest/tex.html#tex-and-latex-extensions";>http://docs.mathjax.org/en/latest/tex.html#tex-and-latex-extensions</a>.</p>

** Affects: mahara
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Mahara
Contributors, which is subscribed to Mahara.
Matching subscriptions: Subscription for all Mahara Contributors -- please ask on #mahara-dev or mahara.org forum before editing or unsubscribing it!
https://bugs.launchpad.net/bugs/1464858

Title:
  Add MathJax and mhchem support to Mahara

Status in Mahara ePortfolio:
  New

Bug description:
  MathJax has become the de facto standard for displaying mathematical
  equations on the Web. The mhchem extension to MathJax provides
  additional support for chemical equations. The addition of these would
  allow Mahara to better support STEM subjects. MathJax is already
  supported by recent versions of Moodle where it provides an
  alternative to server-side TeX filters.

  The following is a fairly minimalist implementation. More
  sophisticated admin/configuration could be added.

  1. Add a checkbox to /htdocs/admin/site/options.php:

  Around line 113 add:

                  'mathjax' => array(
                      'type'         => 'checkbox',
                      'title'        => get_string('mathjax', 'admin'),
                      'description'  => get_string('mathjaxdescription', 'admin'),
                      'defaultvalue' => get_config('mathjax'),
                      'help'         => true,
                      'disabled'     => in_array('mathjax', $OVERRIDDEN),
                  ),

  Around line 763 add mathjax to the $fields array to give:

      $fields = array(
          'sitename','lang','theme', 'dropdownmenu',
          'defaultaccountlifetime', 'defaultregistrationexpirylifetime', 'defaultaccountinactiveexpire', 'defaultaccountinactivewarn',
          'defaultaccountlifetimeupdate', 'allowpublicviews', 'allowpublicprofiles', 'allowanonymouspages', 'generatesitemap',
          'registration_sendweeklyupdates', 'mathjax', 'institutionexpirynotification', 'institutionautosuspend', 'requireregistrationconfirm',
          'showselfsearchsideblock', 'searchusernames', 'searchplugin', 'showtagssideblock',
          'tagssideblockmaxtags', 'country', 'viewmicroheaders', 'userscanchooseviewthemes',
          'remoteavatars', 'userscanhiderealnames', 'antispam', 'spamhaus', 'surbl', 'anonymouscomments',
          'recaptchaonregisterform', 'recaptchapublickey', 'recaptchaprivatekey', 'loggedinprofileviewaccess', 'disableexternalresources',
          'proxyaddress', 'proxyauthmodel', 'proxyauthcredentials', 'smtphosts', 'smtpport', 'smtpuser', 'smtppass', 'smtpsecure',
          'noreplyaddress', 'homepageinfo', 'showprogressbar', 'showonlineuserssideblock', 'onlineuserssideblockmaxusers',
          'registerterms', 'licensemetadata', 'licenseallowcustom', 'allowmobileuploads', 'creategroups', 'createpublicgroups', 'allowgroupcategories', 'wysiwyg',
          'staffreports', 'staffstats', 'userscandisabledevicedetection', 'watchlistnotification_delay',
          'masqueradingreasonrequired', 'masqueradingnotified', 'searchuserspublic',
          'eventloglevel', 'eventlogexpiry', 'sitefilesaccess', 'exporttoqueue',
      );

  2 Add  $CFG->mathjaxpath and $CFG->mathjaxconfig to the end of /lib/config-default.php:
     
   /**
   * @global string $cfg->mathjaxpath Determines the path to CDN or server-local installation of MathJax.js.
   * If MathJax is enabled, use to configure path to MathJax.
   */
  $cfg->mathjaxpath = '//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML&delayStartupUntil=configured';

  /**
   * @global string $cfg->mathjaxconfig Determines MathJax configuration options.
   * The default MathJax configuration should be appropriate for most users, but MathJax is highly configurable
   * and any of the standard MathJax configuration options can be added here.
   */
  $cfg->mathjaxconfig = '
  MathJax.Hub.Config({
  TeX:{extensions: ["mhchem.js"]}
  });
  MathJax.Hub.Configured();
  ';

  NB the protocol-neutral MathJax URL should work with either http: or
  https: Mahara sites.

  3. Add the following to htdocs/lib/web.php immediately before TinyMCE
  is first included around line 111:

      if (get_config('mathjax')) {
          $headers[] = '<script>'.get_config('mathjaxconfig').'</script>';
      }

  and just after $javascript_array[] = $jsroot .
  'keyboardNavigation.js'; around line 280 add:

      if (get_config('mathjax')) {
          $javascript_array[] = get_config('mathjaxpath');
      }

  4. To /lang/en.utf8/admin.php add:

  $string['mathjax'] = 'Enable MathJax';
  $string['mathjaxdescription'] = 'MathJax enables mathematical and science equations to be displayed';
  $string['mathjaxconfig'] = 'MathJax configuration';

  5 Create /lang/en.utf8/help/forms/siteoptions.mathjax.html with the
  content:

  <!-- @license http://www.gnu.org/copyleft/gpl.html GNU GPL version 3 or later -->
  <!-- @copyright For copyright information on Mahara, please see the README file distributed with this software. -->
  <h3>MathJax</h3> 
  MathJax is a JavaScript display engine for TeX, LaTeX, AsciiMath and MathMl notation which allows mathematics and science equations to be displayed in Mahara pages.
  <p>MathJax allows the display of equations throughout your Mahara installation.</p>
  <h4>MathJax URL</h4>
  <p>The default configuration uses the latest stable version on the MathJax Content Distribution Network (CDN). http and https protocols may be used, as appopriate.</p>
  <p>Alternatively, $cfg->mathjaxpath may use a local server installation of MathJax. See <a href="http://docs.mathjax.org/en/latest/installation.html";>http://docs.mathjax.org/en/latest/installation.html</a></p>
  <p>The default includes a commonly used configuration allowing input of MathML, AsciiMath, TeX or LaTeX and processing to MathML or HTML-CSS</p>
  <h4>MathJax additional configuration</h4>
  <p>Additional MathJax configuration can be added to $cfg->mathjaxconfig. The default MathJax configuration should be appropriate for most users, but MathJax is highly configurable and any of the standard MathJax configuration options can be added here.</p>
  <p>By default, includes the mhchem extension which adds the \ce macro for chemical formulae. See <a href="http://docs.mathjax.org/en/latest/tex.html#tex-and-latex-extensions";>http://docs.mathjax.org/en/latest/tex.html#tex-and-latex-extensions</a>.</p>

To manage notifications about this bug go to:
https://bugs.launchpad.net/mahara/+bug/1464858/+subscriptions


Follow ups

References