Forum Discussion

JohnDallas-80f1's avatar
JohnDallas-80f1
Community Member
8 years ago

How to add Accessible Mathematics to your rise course. (Including Super and Sub Scripts and Formulas)

Edit 1: Updated with JS to check for dynamically created content.

Edit 2: Updated with /content/lib/main.bundle.js script injection needed for continue buttons and other dynamic content.

 

Here are the steps to follow for creating accessible Math in rise:

  1. Use the following site to create your math latex formula: https://www.codecogs.com/latex/eqneditor.php and to confirm the equation displays the way you want. An example of a formula might be x^{2} = \frac{2}{y} which is “x² = 2 / y”
  2. Copy your latex formula into Rise where you want it, but add “$$” before and after, so: $$x^{2} = \frac{2}{y}$$
  3. Do this for all equations until you publish.
  4. After publishing, extract the zip file and open index.html
  5.  After the <head> tag, insert the following Javascript:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-MML-AM_CHTML'></script>

<script type="text/javascript">
// Inspect the array of MutationRecord objects to identify the nature of the change
function mutationObjectCallback(mutationRecordsList) {
mutationRecordsList.forEach(function(mutationRecord) {
if ("attributes" === mutationRecord.type) {
}
});
MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
}

// Create an observer object and assign a callback function
var observerObject = new MutationObserver(mutationObjectCallback);

// the target to watch, this could be #yourUniqueDiv
// we use the body to watch for changes
var targetObject = document.body;

// Register the target node to observe and specify which DOM changes to watch


observerObject.observe(targetObject, {
attributes: true,
attributeFilter: ["id", "dir"],
attributeOldValue: true,
childList: true
});
</script>

6. Finally, in /content/lib/main.bundle.js search for the following code:

                      return e.createElement("div", null, this.props.children)

and add the following right before it:

MathJax.Hub.Queue(["Typeset",MathJax.Hub]);  

 

  • CarolKinnard's avatar
    CarolKinnard
    Community Member

    The MathJax script above was working prior to the new year (2024) but now produces raw LaTex instructions. Is anyone else experiencing this?

  • Hi all,

    Thanks to John and Zachary for the code.  I am not js proficient at all, just a bit of HTML and CSS.  I have followed the instructions to the T as the module I am developing uses mostly inline math equations.  However, after doing a test publish with the revised index.html file, my equations only render on the first page, there after it shows the equations in their code format e.g., $$$0=0$$$, but as soon as I try to copy an equation over to Word to test to see if it is fonts causing the trouble, the whole page suddenly displays correctly?! What am I doing wrong?  I've tested this in three different browsers: FireFox (my default), Chrome and Edge, they all display it incorrectly at first until you highlight an equation and press CTL + C then is fixes the display.

  • MikeAdamski's avatar
    MikeAdamski
    Community Member

    There's an even bigger need for an equation editor in both Rise and Storyline in 2024-2025 than ever. +1