Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Cannot navigate system of equations from LaTeX array: ZoomIn errors / incomplete column navigation

Open
#535 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
50/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
rust
Domain
accessibility

Research direction

Start with the MathCAT demo and the DoNavigateCommand("ZoomIn") path reported by NVDA's MathCAT.py reportFocus traceback, using the supplied MathML as the reproducer. Compare navigation in the affected versions and verify that ZoomIn succeeds and arrow navigation reaches every column in both equation rows without an internal error.

Written by the indexing model from the issue text.

Description

bug

Summary

When navigating a system of equations as found on Linear Algebra with Applications, 1.1: Solutions and Elementary Operations, Exercise 1.1E7, MathCAT fails in two distinct ways depending on the version used:

  • MathCAT plugin 0.7.5 +NVDA 2025.3.3: An internal error is thrown immediately upon attempting to navigate the expression, blocking all navigation.
  • NVDA 2026.1 beta8 (MathCAT internalized): No error is thrown, and both lines of the expression are read correctly at the top level, but zooming into either row only allows access to the first column — arrowing right from column 1 announces "end of math" even though additional columns exist.

Environment

Component Version
NVDA (original report) 2025.3.3 x86
MathCAT (original report) 0.7.5 (add-on)
NVDA (follow-up) 2026.1 beta8 (2026.1.0.55204)
MathCAT (follow-up) Internalized in NVDA 2026.1 beta8
MathCAT Demo using v0.7.2
Speech rule set en/ClearSpeak, Simple or Enhanced navigation modes
OS Windows 11 24H2 (10.0.26100.8037)

Expression

LaTeX source:

\begin{array}[t]{rlrcr} x & - & 3y & = & 5\\ 2x & + & y & = & 1 \end{array}

MathML (as generated by MathJax 4.1.1):

<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mtable columnspacing="1em" rowspacing="4pt" columnalign="right left right center right" align="baseline 1" data-frame-styles="" framespacing=".5em .125em">
    <mtr>
      <mtd>
        <mi>x</mi>
      </mtd>
      <mtd>
        <mo>&#x2212;</mo>
      </mtd>
      <mtd>
        <mn>3</mn>
        <mi>y</mi>
      </mtd>
      <mtd>
        <mo>=</mo>
      </mtd>
      <mtd>
        <mn>5</mn>
      </mtd>
    </mtr>
    <mtr>
      <mtd>
        <mn>2</mn>
        <mi>x</mi>
      </mtd>
      <mtd>
        <mo>+</mo>
      </mtd>
      <mtd>
        <mi>y</mi>
      </mtd>
      <mtd>
        <mo>=</mo>
      </mtd>
      <mtd>
        <mn>1</mn>
      </mtd>
    </mtr>
  </mtable>
</math>

Steps to Reproduce

  1. Load the MathML above in any context (original web page with MathJax, a standalone HTML5 file, or the MathCAT demo tool), or visit Linear Algebra with Applications, 1.1: Solutions and Elementary Operations, Exercise 1.1E7
  2. Place focus on the expression and enter math navigation mode.
  3. Attempt to navigate into the expression (ZoomIn / arrow keys).

Observed Behavior

NVDA 2025.3.3 + MathCAT 0.7.5 add-on

Navigation fails immediately with the following error logged to the NVDA log:

ERROR - external:globalPlugins.MathCAT.MathCAT.MathCATInteraction.reportFocus
Internal error: With en/ClearSpeak in Simple mode, can't ZoomIn from expression with id 'Mhlh64ol-2'
<math data-from-mathml='math' id='Mhlh64ol-0' data-id-added='true'>
  <system-of-equations data-from-mathml='mtable' align='baseline 1' columnalign='right left right center right' columnspacing='1em' data-frame-styles='' data-latex='\begin{array}[t]{rlrcr} x &amp; + &amp; 2y &amp; = &amp; 0\\ &amp; &amp; y &amp; = &amp; 1 \end{array}' framespacing='.5em .125em' rowspacing='4pt' id='Mhlh64ol-1' data-id-added='true'>
....[OMMITTED - see below for full NVDA Log]
  </system-of-equations>
</math>

Traceback (most recent call last):
  File "C:\Users\mstores\AppData\Roaming\nvda\addons\MathCAT\globalPlugins\MathCAT\MathCAT.py", line 260, in reportFocus
    text: str = libmathcat.DoNavigateCommand("ZoomIn")
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand for Full NVDA Log
INFO - __main__ (16:59:28.257) - MainThread (29800):
Starting NVDA version 2025.3.3 x86
INFO - core.main (16:59:29.649) - MainThread (29800):
Config dir: C:\Users\mstores\AppData\Roaming\nvda
INFO - config.ConfigManager._loadConfig (16:59:29.657) - MainThread (29800):
Loading config: C:\Users\mstores\AppData\Roaming\nvda\nvda.ini
INFO - core.main (16:59:39.639) - MainThread (29800):
Windows version: Windows 11 24H2 (10.0.26100.8037) workstation AMD64
INFO - core.main (16:59:39.639) - MainThread (29800):
Using Python version 3.11.9 (tags/v3.11.9:de54cf5, Apr  2 2024, 10:00:00) [MSC v.1938 32 bit (Intel)]
INFO - core.main (16:59:39.639) - MainThread (29800):
Using comtypes version 1.4.11
INFO - core.main (16:59:39.682) - MainThread (29800):
Using configobj version 5.1.0 with validate version 1.0.1
INFO - synthDriverHandler.setSynth (16:59:44.773) - MainThread (29800):
Loaded synthDriver sapi5
WARNING - mathPres.initialize (16:59:44.837) - MainThread (29800):
MathPlayer 4 not available
INFO - core._setUpWxApp (16:59:45.343) - MainThread (29800):
Using wx version 4.2.2 msw (phoenix) wxWidgets 3.2.6 with six version 1.17.0
INFO - brailleInput.initialize (16:59:45.428) - MainThread (29800):
Braille input initialized
INFO - braille.initialize (16:59:45.428) - MainThread (29800):
Using liblouis version 3.34.0
INFO - braille.initialize (16:59:45.429) - MainThread (29800):
Using pySerial version 3.5
INFO - braille.BrailleHandler._setDisplay (16:59:45.444) - MainThread (29800):
Loaded braille display driver 'noBraille', current display has 0 cells.
INFO - core.main (16:59:46.652) - MainThread (29800):
Java Access Bridge support initialized
INFO - UIAHandler.UIAHandler.MTAThreadFunc (16:59:47.563) - UIAHandler.UIAHandler.MTAThread (24788):
UIAutomation: IUIAutomation6
INFO - external:globalPlugins.MathCAT.MathCAT.MathCAT.__init__ (16:59:50.787) - MainThread (29800):
MathCAT 0.7.5 installed. Using rules dir: C:\Users\mstores\AppData\Roaming\nvda\addons\MathCAT\globalPlugins\MathCAT\Rules
INFO - core.main (16:59:51.860) - MainThread (29800):
NVDA initialized
INFO - updateCheck.AutoUpdateChecker._started (16:59:53.617) - MainThread (29800):
Performing automatic update check
ERROR - external:globalPlugins.MathCAT.MathCAT.MathCATInteraction.reportFocus (17:10:12.125) - MainThread (29800):
Internal error: With en/ClearSpeak in Simple mode, can't ZoomIn from expression with id 'Mhlh64ol-2' inside:

Traceback (most recent call last):
File "C:\Users\mstores\AppData\Roaming\nvda\addons\MathCAT\globalPlugins\MathCAT\MathCAT.py", line 260, in reportFocus
text: str = libmathcat.DoNavigateCommand("ZoomIn")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OSError: Internal error: With en/ClearSpeak in Simple mode, can't ZoomIn from expression with id 'Mhlh64ol-2' inside:





x
+

2
⁢
y

=
0








y
=
1





No navigation of the expression is possible.

NVDA 2026.1 beta8 (MathCAT internalized)
  • Entering navigation mode and hearing the full expression read aloud works correctly.
  • Both rows of the system are announced correctly at the top level.
  • Zooming into the column level of either row (row 1 or row 2) only allows access to the first <mtd> (column 1).
  • Pressing the right arrow key after column 1 announces "end of math" instead of moving to the next column.
  • This behavior is consistent across:
    • The original web page (MathJax-rendered)
    • A minimal standalone HTML5 file containing only the MathML above
    • The MathCAT demo tool (tested with both the LaTeX source and the MathML directly)

Expected Behavior

After zooming into a row of the system of equations, all the columns should be navigable left-to-right. Right-arrowing from column 1 should move to column 2, and so on through all <mtd> elements in the row.

Dominant language
Rust
Stars
114
Forks
85
Avg merge
1d 11h
Merged PRs (30d)
77

Getting set up

We have not checked this project's setup files yet. Start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from daisy/MathCAT

All issues in daisy/MathCAT

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.