Releases: NSoiffer/MathCATForPython
Development Build
V0.7.5
Bugs Fixed
- If MathML is directly embedded inside of a MathML leaf element, it will be spoken well.
- Improved Chemistry so that if the intent property
:chemical-formulais used, it is inherited and overrides heuristics to determine if something is a chemical formula. For example, "A=B" will now speak "=" as "double bond". - Fix bug in German translation for division involving units (=> "pro")
- Fix bug in MathCAT dialog that prevented proper selection of Norwegian
- For ASCIIMath, added translations for chars with umlauts and also for ß (goes to "ss" because there is no defined encoding for it)
- Added literal speech for "‼" and "/" to English.
API Additions
- Added calls for
GetSupportedLanguages,GetSupportedSpeechStyles, andGetSupportedBrailleCodes.
V0.7.4-rc.1
Bugs Fixed
- If MathML is directly embedded inside of a MathML leaf element, it will be spoken well.
- Improved Chemistry so that if the intent property
:chemical-formulais used, it is inherited and overrides hueristics to determine if something is a chemical formula. For example, "A=B" will now speak "=" as "double bond". - Fix bug in German translation for division involving units (=> "pro")
- Fix bug in MathCAT dialog that prevented proper selection of Norwegian
- For ASCIIMath, added translations for chars with umlauts and also for ß (goes to "ss" because there is no defined encoding for it)
- Added literal speech for "‼" and "/" to English.
API Additions
- Added calls for
GetSupportedLanguages,GetSupportedSpeechStyles, andGetSupportedBrailleCodes.
V0.7.3
V0.7.2
- Added German translation. There is still more work to do on this, but I'm told it is usable.
- Added Norwegian translation
- Improved reading of "neuter" units
- Changed some character wording ("if and only if", "implies", "triangle")
- Fix problems with the zip files and regional variants. This should allow en-gb and zh-tw to be available.
- Fixed bugs in navigating in character mode and simple mode.
- Changed the names of some characters to be more semantic (e.g., "long double left right arrow" is not "if and only if").
- Add some "literal" (not semantic) names for characters for LiteralSpeak and navigation.
- Fixed some bugs dealing with "intent"
- Fix a bug with generating id's that could cause a crash once every 36^4 times
- Add another heuristic to prevent something from being a potential function (when the potential function name appears within the argument)
- Fixed reading of a degree symbol followed by "F" or "C".
- Corrected the rule for what is allowed for "intent"
- Improved the inference rules for units (supports "mi" if it is marked as "normal")
- Fixed a navigation bug with log, ln, and lg
- Improved error messages -- these should aid in reporting problems in speech and navigation
- Improved speech for fractions that involve units ("meters per second")
- Many improvements to the recognition of Chemistry
- Fixed a Nemeth bug where a script end and baseline indicator were emitted when neither should have been present.
- Added varepsilon character to UEB
- Fixed off-by-one error when computing what to highlight in braille.
- Add definitions for "ⅆ", "ⅇ", "ⅈ" to braille codes
MathCAT 0.6.10 (Build for NVDA 2025.1)
Main change is to make this to work with NVDA 2025.1
The zip library version that MathCAT users was withdrawn and this is built on a newer version of zip.
MathCAT 0.6.9 (Build for NVDA 2025.1)
Changes since last release
- Update manifest to indicate compatibility with 2025.1
- Fix unhandled exception when opening up a new user preference file
- Strip '_' and '-' from unmatched intent names (and literals). For example "my-function" should be "my function".
- Add rule for "x check" (inverted hat)
- Add rule for repeating decimals for 'en'. This only handles the line over the repeating part, not other notations.
MathCAT 0.6.8 (Build for NVDA 2024.4)
MathCAT Update Log
Note: this works with an early March, 2025 NVDA alpha build, but there is no guarantee it will work with 2025.1.
Version 0.6.8
Lots of changes because it has been a while since the last official release. These are the improvements since 0.5.6 (sorry, I didn't make a clean up
Languages and braille systems currently supported:
- Languages: Chinese (Taiwan), English, Finnish, Indonesian, Spannish, Swedish, Vietnamese
- Braille: CMU (Portuguese, Spanish), Finnish AsciiMath, LaTeX (as used in German braille), Nemeth, Swedish, UEB, Vietnamese
Speech
- Added "LiteralSpeak" style that does not infer what the meaning of the math and therefore, how that meaning spoken.
- Added more cases where invisible times is spoken (before roots)
- Added ability for authors to insert pauses (English only at the moment)
- Added a pause before row/equation/line labels
- Added inference for cross-product and dot-product
- Added inference for div, grad, and curl
- Added special speech for zero, identity, and diagonal matrices in English
- Be more restrictive when inferring a table
- Add speech for coordinates ("the point at 1 comma 2")
- Added pauses for a ","
- Added an experimental
:pause-long,:pause-medium,:pause-shortfor intent - Added an 'xlong' pause
- Increased the meaning of short/medium/long pauses from 150ms/300ms/600ms to 200ms/400ms/800ms. As always, these are scaled to the speech rate.
- In MathML 4,
mlabedtris deprecated. A workaround is to use the intent property:equation-labelon anmtdand this is now supported - Added speech for units (e.g., "km", "in") -- won't work for single letter units such as "m" and "s" unless marked as a unit
- Terse mode now says "of" for functions except for trig/log functions. It was a little too terse before.
Navigation
- Added "Speech" to copy menu when navigating so that you can copy out the text used to speak the focus point in the expression being explored.
- Substantial rewrite of the navigation rules so that follow the inferred meaning. For example, if MathCAT says "absolute value of x" and you "zoom in", then you move to the "x", not to a vertical bar. As another example, if MathCAT determines that a table consists of rows of equations, navigation won't concatenate the columns so that the table acts like there is only one column.
- "Speak Overview" didn't do anything (fixed). Overviews remain under-developed.
Braille
- Added preferences so that Nemeth users can remap typeforms (e.g, map BlackBoard Bold to a different character).
- Changed Blackboard typeform indicator to reuse italic indicator instead of reusing the script indicator. By changing the Nemeth typeform values in NVDA's addon subdirectory
addons\MathCAT\globalPlugins\MathCAT\Rulesprefs.yaml or adding it to%AppData%\MathCAT\prefs.yaml`, you can restore the old mapping.
Other
- Fixed a bug with double-struck numbers for Nemeth.
- Several fixes for recognizing chemistry.
Fixes
- Fixed (I hope) a bug in espeak that caused the speech to get slower and slower
- Forgot to implement relative slowdown when navigating -- fixed
- Fixed sans-serif indicator for Nemeth braille.
- Fixed a bug where empty cells in a table that is piecewise, m:system-of-equations or lines were spoken.
- Fixed bug where open/closed intervals were inferred when brackets/parens were nested (can't be an interval).
MathCAT 0.6.6 (Build for NVDA 2024.4)
General Information
Because 0.6.3 had some bad bugs around zipping and didn't make it into the NVDA store, the following list is relative to v0.5.6.
This release now have separate builds for people who want to use a python version of MathCAT outside of NVDA. Choose the appropriate version of MathCAT along with Rules.zip. See test.py for example code on how to use MathCAT. The rules directory can be placed anywhere; SetRulesDir tells MathCAT where to look.
As noted below, this release brings support for several new languages and braille systems. Currently supported:
- Languages: Chinese (Taiwan), English, Finnish, Indonesian, Spannish, Swedish, Vietnamese
- Braille: CMU (Portugese, Spanish), Finnish AsciiMath, LaTeX (as used in German braille), Nemeth, Swedish, UEB, Vietnamese
New Features
Speech
- Added Swedish to supported languages.
- Added Finnish to supported languages.
- MathCAT will switch the voice when reading math if a different language from the current voice was set in the preference dialog.
- Added a en-UK variant with some British ways to speak bracketing chars.
- Added English rules for div, grad, and curl (calculus)
- Added English rule for
$P(A|B)$ so that | is spoken as "given" - In terse mode, integer subscripts are spoken as "x 1" instead of "x sub 1".
- Changed the speech for ≈ from "congruent to" to "approximately equal to"
- Changed speech for the general cases of
moverandmunderfrom "modified x with y above it" to "quantity x with y above it" - Improved rule for {} so that it isn't always spoken as "set of ...". It could just be bracketing chars.
- Tweaked the speech for ∈ inside of a set so that the word "is" is dropped when part of a set -- "the set of all x is an element of ..." sounds poor.
- Improved rule for chemistry recogition for atomic numbers.
- Update to speech hint property names in the proposed MathML Core property list
- Add speech for coordinates ("the point at 1 comma 2")
Braille
- Added support for Finnish version of AsciiMath braille
- Added support for Swedish braille
- Added support for Vietnamese accents position for Vietnamese braille vowel "rhymes".
Other
- All the language and braille Rule files are zipped up per directory and unzipped on demand.
- This currently saves ~5mb when Rules.zip is unzipped, and will save even more as more languages and braille codes are added.
- If you know certain languages or braille code will definitely be used (e.g., it is the default), then the files in those directories can be manually unzipped to save a few tens of milliseconds the first time the language/braille code by that user.
- Added new preference DecimalSeparator.
- The default value is Auto, with other values being ".", ",", and "Custom". The first three values set DecimalSeparators and BlockSeparators.
- Auto sets those preferences based on the value of the Language pref. For some language such as Spanish, , is used in some countries and . is used in others. In this case, it is best to set the language to also include the country code (e.g, es-es or es-mx) to ensure the right value is used.
- Added more Unicode chars to include both all Unicode chars marked as "Sm" and those with a mathclass (except Alphabetic and Glyph classes) in the Unicode standard.
- Add support for some (upcoming) new Unicode characters (equilibrium arrows and others) used in Chemistry into UEB and Nemeth
- Several fixes for recognizing chemistry
Fixes
- Fixed a bug in UEB where passage mode should have been used for capitals.
- Fixed a crash with UEB in certain conditions with runs of capital letters.
- Fixed bug in Navigation of tables (previously reported "Error in Navigation").
- Fixed bug moving to previous/next column in tables when at a table row level.
- Fixed bug when trying to correct bad MathML representation of chemistry inside of the base of a script
- Fixed Vietnamese braille for "/"/
- In the dialog code, the file location and %APPDATA% are now used to find the Rules and prefs files.
- After changing how prefs work in a previous version, I forgot to change MathRate and PauseFactor to be numbers, not strings.
- Fixed bug in the braille Rules (missed change from earlier) where a third argument should have been given to say to look in the Braille definitions.yaml files and not the speech ones when looking up the value of a definition.
- Cleaned up use of definitions.yaml.
- Fixed some bugs in the MathML cleanup for "," decimal separators.
- Found a bug in braille highlighting when nothing is highlighted (maybe never happens which is why I didn't see it in practice?)
- Fixed "Describe" mode so that it works -- it is still very minimal and probably not useful yet
- Add space after math speech to work around a MS Word bug that concatinates the next character in the text onto the math.
MathCAT 0.6.3 (Build for NVDA 2024.1)
New Features
- Added new preference
DecimalSeparator.- The default value is
Auto, with other values being ".", ",", and "Custom". The first three values setDecimalSeparatorsandBlockSeparators. Autosets those preferences based on the value of theLanguagepref. For some language such as Spanish,,is used in some countries and.is used in others. In this case, it is best to set the language to also include the country code (e.g,es-esores-mx) to ensure the right value is used.
- The default value is
- Added Swedish to supported languages.
Bug Fixes and other changes
- All the language and braille Rule files are zipped up per directory and unzipped on demand.
- This currently saves ~5mb when Rules.zip is unzipped, and will save even more as more languages and braille codes are added.
- This is in preparation for MathCAT being built into NVDA 2024.3
- Added more Unicode chars to include both all Unicode chars marked as "Sm" and those with a mathclass (except Alphabetic and Glyph classes) in the Unicode standard.
- After changing how prefs work in a previous version, I forgot to change
MathRateandPauseFactorto be numbers, not strings. - Fixed bug in the braille Rules (missed change from earlier) where a third argument should have been given to say to look in the Braille
definitions.yamlfiles and not the speech ones when looking up the value of a definition. - Cleaned up use of
definitions.yaml. - Fixed some bugs in the MathML cleanup for "," decimal separators.
- Found a bug in braille highlighting when nothing is highlighted (maybe never happens which is why I didn't see it in practice?)
- Fixed "Describe" mode so that it works -- it is still very minimal and probably not useful yet
- Fixed minimum supported version