diff options
| author | Juan Marin Noguera <juan@mnpi.eu> | 2023-08-22 17:56:56 +0200 | 
|---|---|---|
| committer | Juan Marin Noguera <juan@mnpi.eu> | 2023-08-22 17:56:56 +0200 | 
| commit | 1fd2213192d22880706440e7f724bdc6db966ee0 (patch) | |
| tree | ff2d6812ef6db399852ad8c4cf2b6f1cd417dfed /present/plugin/math/mathjax3.js | |
| parent | 2f9eb7a94819a08937ba08320a142b7f0be407fd (diff) | |
Añadida presentación1.0
Diffstat (limited to 'present/plugin/math/mathjax3.js')
| -rw-r--r-- | present/plugin/math/mathjax3.js | 77 | 
1 files changed, 77 insertions, 0 deletions
| diff --git a/present/plugin/math/mathjax3.js b/present/plugin/math/mathjax3.js new file mode 100644 index 0000000..9e62d0d --- /dev/null +++ b/present/plugin/math/mathjax3.js @@ -0,0 +1,77 @@ +/** + * A plugin which enables rendering of math equations inside + * of reveal.js slides. Essentially a thin wrapper for MathJax 3 + * + * @author Hakim El Hattab + * @author Gerhard Burger + */ +export const MathJax3 = () => { + +    // The reveal.js instance this plugin is attached to +    let deck; + +    let defaultOptions = { +        tex: { +            inlineMath: [ [ '$', '$' ], [ '\\(', '\\)' ]  ] +        }, +        options: { +            skipHtmlTags: [ 'script', 'noscript', 'style', 'textarea', 'pre' ] +        }, +        startup: { +            ready: () => { +                MathJax.startup.defaultReady(); +                MathJax.startup.promise.then(() => { +                    Reveal.layout(); +                }); +            } +        } +    }; + +    function loadScript( url, callback ) { + +        let script = document.createElement( 'script' ); +        script.type = "text/javascript" +        script.id = "MathJax-script" +        script.src = url; +        script.async = true + +        // Wrapper for callback to make sure it only fires once +        script.onload = () => { +            if (typeof callback === 'function') { +                callback.call(); +                callback = null; +            } +        }; + +        document.head.appendChild( script ); + +    } + +    return { +        id: 'mathjax3', +        init: function(reveal) { + +            deck = reveal; + +            let revealOptions = deck.getConfig().mathjax3 || {}; +            let options = {...defaultOptions, ...revealOptions}; +            options.tex = {...defaultOptions.tex, ...revealOptions.tex} +            options.options = {...defaultOptions.options, ...revealOptions.options} +            options.startup = {...defaultOptions.startup, ...revealOptions.startup} + +            let url = options.mathjax || 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'; +            options.mathjax = null; + +            window.MathJax = options; + +            loadScript( url, function() { +                // Reprocess equations in slides when they turn visible +                Reveal.addEventListener( 'slidechanged', function( event ) { +                    MathJax.typeset(); +                } ); +            } ); + +        } +    } + +}; | 
