At Learnosity, accessibility is a priority. This includes the tools we provide for creating content such as math equations. Ensuring math content is accessible in the Learnosity APIs has been a focus area for many years, and we continue to invest in this area.

We learned that accessible online math is difficult, and a problem no one has solved comprehensively. This information came from an independent accessibility audit and discussions with the math accessibility community. Technology solutions are one way that accessibility users can access online content, another is *Individual Education Plans / Programs* (IEPs) for users.

As part of these plans, education institutions and users need to ensure they can engage with the educational content being delivered. This can take the form of negotiated needs and identified solutions outside of the technology. When it comes to online math, IEPs play a large part to bridge the existing gaps in technology solutions.

Learnosity continues to watch advancements in technology for accessibility. We remain devoted to improving our technology in this domain, offering user choices for accessibility wherever possible. We intend to use our knowledge and experience to offer not only full accessibility in the math space, but also the best accessible user experience.

## Technology solutions for math content

Learnosity math content can be rendered in a number of ways. Math can be rendered in a static form, for example math in a Question stimulus or Question distractor content. Math can also be dynamically rendered within the response fields of math Question types when using the formula keypad.

## Static math content

The *MathJax* library is used in the Learnosity APIs to render static math and we leverage its built in *assistive MathML* feature. Static math content added to the page contains visibly hidden *MathML* that is identifiable by assistive technology and the math spoken to the user accordingly. Using the *assistive MathML* assistive technology in non English languages will read the *MathML* in the required language.

## Dynamically rendered math content

When end users enter math symbols via the keypad in math response Questions, Learnosity uses the proprietary *spokenmath* to dynamically generate assistive content as the user types. Our keypad produces content marked up in the *LaTeX* markup language. As each symbol is entered, the *LaTeX* is converted to plain text and updated to an ARIA live announcement giving the user a spoken indication of what they have entered.

This is not the only place in the Learnosity APIs where *spokenmath* is used, there are two other cases, client customisation of math labels and automated generation of some Question type distractors.

*Figure 1: Dynamically generating spokenmath on user input*

## Customizing math labels

Within the Learnosity authoring environment, all math input using the Learnosity math keypad has an option to *Edit ARIA label* for the math. When this checkbox is selected, a field is exposed where clients can input a custom label for the math. The field is populated by default using a *spokenmath* label. However, this can be edited as needed. This text label is saved with the Question and added to the page when the Question is loaded. This replaces the *MathJax assistive MathML* and is treated like any ARIA label by the assistive technology.

*Figure 2: ARIA Label editing within stimulus math input*

*Figure 3: ARIA Label editing within math Question validation*

### Issues with automated math generation

When math is used as the only content within a Question distractor, such as MCQ (Multiple Choice Questions) we have encountered an issue with how the *MathJax assistive MathML* is handled by accessibility APIs in web browsers.

The assistive *MathML* is nested from the interactive element (e.g. radio buttons in MCQ). In plain terms, this means the assistive *MathML* for that math is not seen by screen readers when navigating in ‘forms’ mode (tabbing) so the math label is not read with the associated radio button. The *assistive MathML* can be reached when using screen reader reading mode, however that is not always intuitive for the expectation of interactive elements such as radio buttons.

In order to get around this we use *spokenmath* to generate a plain text label for the math and associate that with the interactive elements label.

Although this solution solves the missing label in screen reader forms mode navigation there is an issue when it comes to non English use of the Learnosity APIs. To date there is no ability to customize, or Label bundle *spokenmath* for non English languages and these labels are always generated in English. If the client product is being versioned in non English languages, then we recommend following the *Client customisation of math labels* approach above and adding the non English label for the math in authoring to ensure that the user will receive the correct language reading of the math.

### Disabling *spokenmath*

Implementing *spokenmath* was particularly successful in improving accessibility of our user inputs in math Question types. It is well-loved by clients and works well to give assistive users instant and dynamically updated feedback on what they are inputting.

However, despite all of our best intentions to help assistive users, *spokenmath* does not work for all clients or all math end users.

Feedback from the math accessibility community has highlighted that the *spokenmath* text string is read like any ARIA label, as a continuous announcement. For younger level math users, this can be fine as the expressions are simpler and shorter. As screen reader users cannot use standard reading controls such as pause, or 'read word by word', it can be difficult when interpreting more complex expressions.

Unlike *assistive MathML*, the user is unable to target specific aspects of an expression for better comprehension or understanding. Instead they can only listen to the whole expression as a text string from start to end.

*Spokenmath* is enabled by default however where clients may prefer not to leverage spoken math, Learnosity offers two configurations to disable *spokenmath*.

`disable_spokenmath_user_inputs`

will disable the auto generation of*spokenmath*for math Question type user inputs.`disable_spokenmath_distractors`

will disable our own use of*spokenmath*in Question types such as*MCQ*to generate assistive text labels for math in distractors.

These configurations allow clients to decide if they want to use spokenmath. But they are also needed when using Learnosity with non English languages, as spokenmath only generates English text.

**NOTE**: Once the setting is disabled, assistive users will not hear the math announced in screen reader *forms mode* navigation. See the *Client customisation of math labels* section above for guidance on how to add custom labels for math to ensure assistive users hear a label on the form element. Additionally, the user response inputs will no longer read the math being input.