<!DOCTYPE html> <html> <head> <title>MathJax Signals Test Page</title> <!-- Copyright (c) 2010-2012 Design Science, Inc. --> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <!-- | This example shows how to use MathJax's signal mechanism to find out | about what MathJax is doing, and to hook into various events as they | occur. --> <script type="text/x-mathjax-config"> // // Configure MathJax // MathJax.Hub.Config({ extensions: ["tex2jax.js","TeX/noUndefined.js"], jax: ["input/TeX","output/HTML-CSS"], tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}, TeX: {extensions: ["AMSmath.js","AMSsymbols.js"]} }); // // Display messages when these files are loaded // (Note the difference between extensions and TeX.extensions, // and the difference between when noUndefind is loaded compared // to when it signals that it is ready) // MathJax.Hub.Register.LoadHook("[MathJax]/extensions/TeX/noUndefined.js", function () {MathJax.Hub.Startup.signal.Post("*** noUndefined Loaded ***")}); MathJax.Hub.Register.LoadHook("[MathJax]/extensions/TeX/AMSmath.js", function () {MathJax.Hub.Startup.signal.Post("*** AMSmath Loaded ***")}); // // Display a message that we are in the configuration code // (The Message function is not yet defined when this code // runs, so we can't use that here. Post a signal // of our own, so it will be displayed along with all // the other signals). // MathJax.Hub.Startup.signal.Post("*** In Startup Configuration code ***"); // // When the "onLoad" message is posted, display a message. // (Since this hook is registered before the ones in the main body // below, it runs before the code to print the "Startup: onLoad" // message, so this message shows up first in the output.) // MathJax.Hub.Register.StartupHook("onLoad",function () { Message("*** The onLoad handler has run, page is ready to process ***"); }); // // This will be performed after MathJax has completed its // setup and typesetting run, which have already been // pushed onto the queue. // (Since the Message function isn't defined yet when this code // runs, we need to enclose it in a function so it will be // looked up later when it is defined.) // MathJax.Hub.Queue(function () {Message("*** MathJax is done ***")}); </script> <script type="text/javascript" src="../MathJax.js"></script> <style> .output { background-color: #F0F0F0; border-top: 1px solid; border-bottom: 1px solid; padding: 3px 1em; } </style> </head> <body> <p> When \(a \ne 0\), there are two solutions to \(ax^2 + bx + c = 0\) and they are $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$ </p> <p> Messages about mathematics: <pre id="MathMessages" class="output"> </pre> </p> <p> All Messages: <pre id="AllMessages" class="output"> </pre> </p> <script> (function () { // // The output areas // var math = document.getElementById("MathMessages"); var all = document.getElementById("AllMessages"); // // A function to display messages in the "AllMessages" area. // We make it global so it can be used in the startup code above. // window.Message = function (message) { MathJax.HTML.addText(all,message); MathJax.HTML.addElement(all,"br"); }; // // Find out about "New Math" messages from the Hub and display them. // (Look up the TeX code for each new math element) // MathJax.Hub.Register.MessageHook("New Math",function (message) { var script = MathJax.Hub.getJaxFor(message[1]).SourceElement(); MathJax.HTML.addText(math,message.join(" ")+": '"+script.text+"'"); MathJax.HTML.addElement(math,"br"); }); // // Find out about ALL startup and hub messages // MathJax.Hub.Startup.signal.Interest(function (message) {Message("Startup: "+message)}); MathJax.Hub.signal.Interest(function (message) {Message("Hub: "+message)}); // // Since signals are remembered, registering an interest will cause // use to receive all the past signals as well as new ones. // This marks the point were the above routines were called. // Message("##### events above this have already occurred #####"); })(); </script> </body> </html>