daisy / daisy/math-a11y

Word aligned equations created via the three different known techniques each have different failure modes

Open
#76 7 comments 0 reactions 0 assignees View on GitHub
severity:high
Dominant language
VBA
Stars
7
Forks
4
PR merge metrics
No merged PRs in 30d

Description

## Description / Summary

When creating a two-line aligned equation system in Microsoft Word’s built-in equation editor using the three documented techniques, each fails in a unique way. The failures are reproducible in multiple screen readers: **NVDA (MathCAT plugin and NVDA w/MathCAT in NVDA core), JAWS, and Narrator**. The three methods tried were:

| Technique | Visual result in Word | NVDA/MathCAT result |
|---|---|---|
| **Shift+Enter** (soft return inside one equation) + **Align at character** (e.g., `=`) | **Looks correct**: the two lines align at the equals sign after using “Align at this character.” | **Fails on line 1**: attempting to read the first equation triggers an “invalid math formatting” / invalid MathML error, so the first line is not read. |
| **UnicodeMath `\eqarray(...)`** with `&` (alignment point) and `@` (new line) | **Looks correct**: visually matches the Shift+Enter version (aligned at `=`). | **Reads both lines but ambiguous**: Screen readers read through both equations, but do **not announce the end of line 1 / start of line 2** (line boundary not communicated). |
| **Paste MathML** (generated from LaTeX `aligned`, e.g., via MathJax) | **Looks unacceptable**: equals signs are **not lined up**; layout appears like two centered columns rather than aligned at `=`. The extra whitespace makes each equation look like two separate equations. | **Best speech**: Screen readers announce there are **two lines** and clearly indicate **Line 1 ...** and **Line 2 ...**, reading both lines cleanly. |

The recording narrates the three authoring approaches and the observed outcomes:
[Video: MS_Word_and_NVDA_Aligned_Equation_Issues (10 minutes)](https://iu.mediaspace.kaltura.com/media/t/1_2o6v97cw)

## Expected result

* Screen readers should reliably read **all lines** of aligned equations created in Word.
* The spoken output should clearly communicate **line boundaries** (e.g., “line 1… line 2…”).
* The visual rendering should match typical expectations for aligned equations (alignment at `=`) while preserving accessible structure.

## Actual result

### Method 1 (Shift+Enter + Align at `=`)

* **NVDA + MathCAT**: attempting to read the first equation results in an error and speech output failure (“invalid math formatting found” appears in the workflow narration).
* NVDA log shows MathCAT exception due to invalid MathML; the MathML includes an extra empty math element appended:
```txt
ERROR - mathPres.MathCAT.MathCAT.MathCAT.getSpeechForMathMl (16:02:14.733) - MainThread (9252):
Traceback (most recent call last):
File "mathPres\MathCAT\MathCAT.pyc", line 358, in getSpeechForMathMl
OSError: Invalid MathML input:

Error is: XML parsing error at 79: {ExpectedComment, ExpectedProcessingInstruction, ExpectedWhitespace}
```
* **JAWS and Narrator** also fail to read the first equation in this aligned pair (same practical outcome as NVDA).

### Method 2 (UnicodeMath `\eqarray`)

* Reads both lines, but does **not** announce the line boundary; line 2 content follows immediately after line 1, making it difficult for students to know where the first equation ends and the second begins.
* JAWS and Narrator show the same “missing boundary announcement” behavior for the second pair.

### Method 3 (Pasted MathML created by MathJax 4 from LaTeX equivalent `\begin{aligned} ... \end{aligned}`)

* Speech is best: announces “Two lines. Line 1 … Line 2 …” with pauses.
* Visual appearance is **unacceptable**: equals signs are not lined up; content appears centered in columns rather than aligned at the equals sign. The spacing makes it look like each line is two separate equations.

## Steps to reproduce

### Method 1: Shift+Enter + Align at Character

These steps match commonly published guidance for aligning equations in Word: Shift+Enter to add a new line within the same equation object, then “Align at this character” at the equals sign. [\[desystemshelp.leeds.ac.uk\]](https://desystemshelp.leeds.ac.uk/ally-staff/aligning-equations-in-word/), [\[help.typefi.com\]](https://help.typefi.com/hc/en-us/articles/360001852955-Break-and-horizontally-align-MathML-equations)

1. Open **Microsoft Word** and create a new blank document.
2. Insert an equation with **Alt + =**.
3. Ensure the "Unicode" mode is active.
4. Type the first equation: `x + y = 8`.
5. Press **Shift + Enter** to start a new line within the same equation object.
6. Type the second equation: `10x - 6y = 26`.
7. For each line, place the cursor immediately before the `=` and use the context menu to choose **Align at this character** (or “Align at =”, depending on UI wording).
8. Ensure both equations are converted to **Professional** form.
9. Use a screen reader to read/navigate the first line of the aligned equation object: * NVDA + MathCAT: attempt to read equation (e.g., with arrow navigation or math reading commands).
10. **Observed:** NVDA fails to read the first line; NVDA log shows invalid MathML with an extra empty `` appended.

### Method 2: UnicodeMath `\eqarray`

1. Insert an equation with **Alt + =**.
2. Ensure the "Unicode" mode is active.
3. Type: `\eqarray(x+y&=8@10x-6y&=26)`
4. Convert to **Professional** form (you should now have the two aligned equations).
* Note: This method is documented by Microsoft for aligning an equation array. [\[support.mi...rosoft.com\]](https://support.microsoft.com/en-us/office/linear-format-equations-using-unicodemath-and-latex-in-word-2e00618d-b1fd-49d8-8cb4-8d17f25754f8)
5. **Observed:** Both equations are spoken, but the transition between lines is not announced (line 2 begins immediately after line 1).

### Method 3: Paste MathML from LaTeX aligned

1. Move to a blank line in the document.
2. Use MathJax 4 to generate MathML for the LaTeX:
```tex
\begin{aligned}
x+y &= 8 \\
10x-6y &= 26
\end{aligned}
```
or click to get MathML to copy

<math xmlns="http://www.w3.org/1998/Math/MathML" display="block" aria-label="2 lines Line 1: x plus y equals 8 Line 2: 10 x minus 6 y equals 26" aria-braillelabel="&#x282D;&#x282C;&#x283D;&#x2800;&#x2828;&#x2805;&#x2800;&#x283C;&#x2826;&#x2800;&#x283C;&#x2802;&#x2834;&#x282D;&#x2824;&#x2816;&#x283D;&#x2800;&#x2828;&#x2805;&#x2800;&#x283C;&#x2806;&#x2816;">

<mtable displaystyle="true" columnalign="right left" columnspacing="0em" rowspacing="3pt">
<mtr>
<mtd>
<mrow>
<mi>x</mi>
<mo>+</mo>
<mi>y</mi>
</mrow>
</mtd>
<mtd>
<mstyle indentshift="2em">
<mi></mi>
<mrow>
<mrow></mrow>
<mrow>
<mrow></mrow>
<mo>=</mo>
<mn>8</mn>
</mrow>
</mrow>
</mstyle>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mrow>
<mn>10</mn>
<mo>&#x2062;</mo>
<mi>x</mi>
</mrow>
<mo>&#x2212;</mo>
<mrow>
<mn>6</mn>
<mo>&#x2062;</mo>
<mi>y</mi>
</mrow>
</mrow>
</mtd>
<mtd>
<mstyle indentshift="2em">
<mi></mi>
<mrow>
<mrow></mrow>
<mrow>
<mrow></mrow>
<mo>=</mo>
<mn>26</mn>
</mrow>
</mrow>
</mstyle>
</mtd>
</mtr>
</mtable>
</math>

3. Paste the MathML.

4. **Observed:** Spoken output correctly indicates line boundaries (“Two lines: Line 1… Line 2…”), but the visual alignment is not at the equal sign (each equation appears as two centered columns; see screenshot below):

Image

## Impact

* Creates either **unreadable** content (Method 1) or **ambiguous** content (Method 2).
* The only method producing good speech (Method 3) produces unacceptable visual formatting for many authors/faculty.

## Evidence / Logs
The NVDA log after failing to read math created with Method 1:

[nvda.log](https://github.com/user-attachments/files/25784433/nvda.log)

A reference Word doc showing “three ways” of creating the same aligned system exists as:

[MS_Word_Aligned_Equations_Three_Ways.docx](https://github.com/user-attachments/files/25784483/MS_Word_Aligned_Equations_Three_Ways.docx)

## Environment

* Word version/build: `Microsoft® Word for Microsoft 365 MSO (Version 2604 Build 16.0.19826.20002) 64-bit` (Beta Channel)
* Windows version: `Windows 11 Enterprise Version 10.0.26100 Build 26100`
* Screen readers tested:
* NVDA version: `2026.1beta5 (2026.1.0.54894)`, several prior NVDA versions with the MathCAT plugin
* JAWS versions: Latest JAWS 2026 and JAWS 2025 w/MathCAT
* Narrator: Windows built-in version (see above OS Info)

## Links / References

* Microsoft Support: Linear format equations using UnicodeMath and LaTeX in Word [\[support.microsoft.com\]](https://support.microsoft.com/en-us/office/linear-format-equations-using-unicodemath-and-latex-in-word-2e00618d-b1fd-49d8-8cb4-8d17f25754f8). See "UnicodeMath Editing Examples":
Image

* Common guidance describing Shift+Enter + Align-at-character workflow [\[desystemsh...eeds.ac.uk\]](https://desystemshelp.leeds.ac.uk/ally-staff/aligning-equations-in-word/), [\[help.typefi.com\]](https://help.typefi.com/hc/en-us/articles/360001852955-Break-and-horizontally-align-MathML-equations)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.