Cannot navigate system of equations from LaTeX array: ZoomIn errors / incomplete column navigation
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
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>−</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
- 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
- Place focus on the expression and enter math navigation mode.
- 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 & + & 2y & = & 0\\ & & y & = & 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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from daisy/MathCAT
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
bug rules
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
discussion
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
discussion translation
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
daisy/MathCAT#675 · 1 comment ·
Maintainers usually reply within 1 day
-
feature request for vector from O to APossibly taken @moritz-gross claimed this 9 days ago. Openenhancement good first issue rules rust
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
daisy/MathCAT#621 · 1 comment · 1 assignee ·
Maintainers usually reply within 1 day
Similar issues
-
`sysknife history --help` says --since takes ISO-8601, and the parser refuses offsets and bare datesOpenbug easy good first issue help wanted
Difficulty 1/5 1-3 hours Newbie friendliness 94/100
lacs-project/sysknife#519 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 1/5 Under an hour Newbie friendliness 72/100
-
area:breg bug criticality:p3 triage:needs-implementation
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
registrystack/registry-stack#1699 ·
Maintainers usually reply within 1 day
-
documentation
Difficulty 1/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
lbjlaq/Antigravity-Manager#3539 · 2 comments ·
Maintainers usually reply within 1 day