From b2d532ea28eaaf0b7b2cf225c713c8a8d3f4a3bf Mon Sep 17 00:00:00 2001 From: Benjamin Tan Date: Thu, 8 Feb 2018 20:54:21 +0800 Subject: Allow users to customise MathJax options. Ref. #1856, #2006, #2045. This is a more open approach to allow customisation of all MathJax options instead of select options only. --- plugin/math/math.js | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) (limited to 'plugin') diff --git a/plugin/math/math.js b/plugin/math/math.js index 7867376..29445cd 100755 --- a/plugin/math/math.js +++ b/plugin/math/math.js @@ -7,19 +7,26 @@ var RevealMath = window.RevealMath || (function(){ var options = Reveal.getConfig().math || {}; - options.mathjax = options.mathjax || 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js'; - options.config = options.config || 'TeX-AMS_HTML-full'; - options.tex2jax = options.tex2jax || { - inlineMath: [['$','$'],['\\(','\\)']] , - skipTags: ['script','noscript','style','textarea','pre'] }; + var mathjax = options.mathjax || 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js'; + var config = options.config || 'TeX-AMS_HTML-full'; + var url = mathjax + '?config=' + config; - loadScript( options.mathjax + '?config=' + options.config, function() { + var defaultOptions = { + messageStyle: 'none', + tex2jax: { + inlineMath: [ [ '$', '$' ], [ '\\(', '\\)' ] ], + skipTags: [ 'script', 'noscript', 'style', 'textarea', 'pre' ] + }, + skipStartupTypeset: true + }; - MathJax.Hub.Config({ - messageStyle: 'none', - tex2jax: options.tex2jax, - skipStartupTypeset: true - }); + defaults( options, defaultOptions ); + defaults( options.tex2jax, defaultOptions.tex2jax ); + options.mathjax = options.config = null; + + loadScript( url, function() { + + MathJax.Hub.Config( options ); // Typeset followed by an immediate reveal.js layout since // the typesetting process could affect slide height @@ -35,6 +42,16 @@ var RevealMath = window.RevealMath || (function(){ } ); + function defaults( options, defaultOptions ) { + + for ( var i in defaultOptions ) { + if ( !options.hasOwnProperty( i ) ) { + options[i] = defaultOptions[i]; + } + } + + } + function loadScript( url, callback ) { var head = document.querySelector( 'head' ); -- cgit v1.2.3