diff --git a/examples/math.html b/examples/math.html index d282f8a5e2891bbbe0a7f667776ba7d1a9b6437c..03fe22a92b1d729b89c4b449ccaba6c74a2b41bf 100644 --- a/examples/math.html +++ b/examples/math.html @@ -93,6 +93,79 @@ \] </section> + <section> + <section> + <h3>The Lorenz Equations</h3> + + <div class="fragment"> + \[\begin{aligned} + \dot{x} & = \sigma(y-x) \\ + \dot{y} & = \rho x - y - xz \\ + \dot{z} & = -\beta z + xy + \end{aligned} \] + </div> + </section> + + <section> + <h3>The Cauchy-Schwarz Inequality</h3> + + <div class="fragment"> + \[ \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right) \] + </div> + </section> + + <section> + <h3>A Cross Product Formula</h3> + + <div class="fragment"> + \[\mathbf{V}_1 \times \mathbf{V}_2 = \begin{vmatrix} + \mathbf{i} & \mathbf{j} & \mathbf{k} \\ + \frac{\partial X}{\partial u} & \frac{\partial Y}{\partial u} & 0 \\ + \frac{\partial X}{\partial v} & \frac{\partial Y}{\partial v} & 0 + \end{vmatrix} \] + </div> + </section> + + <section> + <h3>The probability of getting \(k\) heads when flipping \(n\) coins is</h3> + + <div class="fragment"> + \[P(E) = {n \choose k} p^k (1-p)^{ n-k} \] + </div> + </section> + + <section> + <h3>An Identity of Ramanujan</h3> + + <div class="fragment"> + \[ \frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} = + 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} + {1+\frac{e^{-8\pi}} {1+\ldots} } } } \] + </div> + </section> + + <section> + <h3>A Rogers-Ramanujan Identity</h3> + + <div class="fragment"> + \[ 1 + \frac{q^2}{(1-q)}+\frac{q^6}{(1-q)(1-q^2)}+\cdots = + \prod_{j=0}^{\infty}\frac{1}{(1-q^{5j+2})(1-q^{5j+3})}\] + </div> + </section> + + <section> + <h3>Maxwell’s Equations</h3> + + <div class="fragment"> + \[ \begin{aligned} + \nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\ \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\ + \nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\ + \nabla \cdot \vec{\mathbf{B}} & = 0 \end{aligned} + \] + </div> + </section> + </section> + </div> </div> @@ -103,9 +176,11 @@ <script> Reveal.initialize({ + history: true, transition: 'linear', math: { + // host: 'http://cdn.mathjax.org/mathjax/latest/MathJax.js', mode: 'TeX-AMS_HTML-full' }, diff --git a/plugin/math/math.js b/plugin/math/math.js index b6bd82fb63449f943ef54603efd7b95392d1a584..78856a558b7bafb865fe5f30bddb439217243c63 100755 --- a/plugin/math/math.js +++ b/plugin/math/math.js @@ -9,27 +9,10 @@ var RevealMath = window.RevealMath || (function(){ var loaded = false; var config = Reveal.getConfig().math || {}; + config.host = config.host || 'http://cdn.mathjax.org/mathjax/latest/MathJax.js'; config.mode = config.mode || 'TeX-AMS_HTML-full'; - var head = document.querySelector( 'head' ); - var script = document.createElement( 'script' ); - script.type = 'text/javascript'; - script.src = 'http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=' + config.mode; - - // Detect when the script has loaded - script.onload = onScriptLoad; - - // IE - script.onreadystatechange = function() { - if ( this.readyState === 'loaded' ) { - onScriptLoad.call(); - } - } - - // Normal browsers - head.appendChild( script ); - - function onScriptLoad() { + loadScript( config.host + '?config=' + config.mode, function() { // Conditioned just in case both onload and readystate fire if( loaded === false ) { @@ -48,11 +31,42 @@ var RevealMath = window.RevealMath || (function(){ // This will only typeset equations that have not yet been // processed, as well as equations that have change since // last being processed. - MathJax.Hub.Update( event.currentSlide ); + MathJax.Hub.Update( event.currentSlide, function() { + Reveal.layout(); + } ); } ); } + } ); + + 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.call(); + } + } + + // Normal browsers + head.appendChild( script ); + } })();