diff options
author | 2016-06-01 14:42:03 +0000 | |
---|---|---|
committer | 2016-06-01 14:42:03 +0000 | |
commit | a574679f7b2636e74e6a262f4badad0445d10c3a (patch) | |
tree | 466429721c3454a9236b033a788ca72f9f4f4507 /docs/com/plugin/math/math.js | |
parent | 70b96b8719b48c51b59182162fe8e018c55e7364 (diff) | |
parent | bb522c6efd9a02e611014038566b15feb28da0c8 (diff) |
Merge "Add framework for presentations"
Diffstat (limited to 'docs/com/plugin/math/math.js')
-rwxr-xr-x | docs/com/plugin/math/math.js | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/docs/com/plugin/math/math.js b/docs/com/plugin/math/math.js new file mode 100755 index 00000000..c0a691d3 --- /dev/null +++ b/docs/com/plugin/math/math.js @@ -0,0 +1,67 @@ +/** + * A plugin which enables rendering of math equations inside + * of reveal.js slides. Essentially a thin wrapper for MathJax. + * + * @author Hakim El Hattab + */ +var RevealMath = window.RevealMath || (function(){ + + var options = Reveal.getConfig().math || {}; + options.mathjax = options.mathjax || 'https://cdn.mathjax.org/mathjax/latest/MathJax.js'; + options.config = options.config || 'TeX-AMS_HTML-full'; + + loadScript( options.mathjax + '?config=' + options.config, function() { + + MathJax.Hub.Config({ + messageStyle: 'none', + tex2jax: { + inlineMath: [['$','$'],['\\(','\\)']] , + skipTags: ['script','noscript','style','textarea','pre'] + }, + skipStartupTypeset: true + }); + + // Typeset followed by an immediate reveal.js layout since + // the typesetting process could affect slide height + MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub ] ); + MathJax.Hub.Queue( Reveal.layout ); + + // Reprocess equations in slides when they turn visible + Reveal.addEventListener( 'slidechanged', function( event ) { + + MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub, event.currentSlide ] ); + + } ); + + } ); + + function loadScript( url, callback ) { + + var head = document.querySelector( 'head' ); + var script = document.createElement( 'script' ); + script.type = 'text/javascript'; + script.src = url; + + // Wrapper for callback to make sure it only fires once + var finish = function() { + if( typeof callback === 'function' ) { + callback.call(); + callback = null; + } + } + + script.onload = finish; + + // IE + script.onreadystatechange = function() { + if ( this.readyState === 'loaded' ) { + finish(); + } + } + + // Normal browsers + head.appendChild( script ); + + } + +})(); |