Topics

nvMathViewer add-on for viewing math content in LaTeX and AsciiMath notations as MathML


Nikita
 

Hello everybody!

nvMathViewer has been released. It is an a add-on that can be used to view mathematical content in LaTeX and AsciiMath notations as MathML.

These notations are widely used to write mathematical symbols and formulas in computer systems. However, understanding LaTeX and AsciiMath requires special knowledge and skills that the average user may not have, such as a simple schoolboy or a humanitarian student. In addition, reading these notations directly may not be convenient enough, because it does not provide additional opportunities for analyzing the structure of formulas.

nvMathViewer solves these problems and enables blind users to quickly view any LaTeX or AsciiMath notations using special functions of NVDA for non-visual reading mathematical content and structural navigation through it.

Links:

Add-on for NVDA 2019.3 and newer - https://tseykovets.ru/download/nvda/nvMathViewer.nvda-addon

Source code - https://github.com/tseykovets/nvmathviewer

Best regards, Nikita.


rowen brian
 

"View the selected LaTeX notation as interactive MathML in the browse mode.": After I perform this action, no window pops up. What is the reason? I confirm that the Latex content has been selected


Nikita
 

Hi Rowen,

I can suggest two explanations:

First, there was an error in the call to the conversion engine. However, in this case NVDA should say "Error!", and an entry should appear in the log.

Second, sometimes NVDA does not automatically focus the window of browse mode. Try again.

The conversion takes time, so it is advisable to wait quietly after calling the action without actively moving the focus.

Best regards, Nikita.

 

From: nvda-addons@nvda-addons.groups.io <nvda-addons@nvda-addons.groups.io> On Behalf Of rowen brian
Sent: Monday, September 14, 2020 11:23 AM
To: nvda-addons@nvda-addons.groups.io
Subject: Re: [nvda-addons] nvMathViewer add-on for viewing math content in LaTeX and AsciiMath notations as MathML

 

"View the selected LaTeX notation as interactive MathML in the browse mode.": After I perform this action, no window pops up. What is the reason? I confirm that the Latex content has been selected


James Scholes
 

How does this differ from MathPlayer and the support already present in NVDA?

Regards,

James Scholes

On 12/09/2020 at 1:33 pm, Nikita wrote:
Hello everybody!
nvMathViewer has been released. It is an a add-on that can be used to view mathematical content in LaTeX and AsciiMath notations as MathML.
These notations are widely used to write mathematical symbols and formulas in computer systems. However, understanding LaTeX and AsciiMath requires special knowledge and skills that the average user may not have, such as a simple schoolboy or a humanitarian student. In addition, reading these notations directly may not be convenient enough, because it does not provide additional opportunities for analyzing the structure of formulas.
nvMathViewer solves these problems and enables blind users to quickly view any LaTeX or AsciiMath notations using special functions of NVDA for non-visual reading mathematical content and structural navigation through it.
Links:
Add-on for NVDA 2019.3 and newer - https://tseykovets.ru/download/nvda/nvMathViewer.nvda-addon
Source code - https://github.com/tseykovets/nvmathviewer
Best regards, Nikita.


Nikita
 

Hi James,
nvMathViewer solves other problems. It does not replace MathPlayer or
Access8Math, but complements them.
For example, there is a user who doesn't know LaTeX, but wants to read a
formula like this.
nvMathViewer will display LaTeX as MathML and then the user can view it
using MathPlayer.
The user needs to select a line
x_{1, 2} = \frac{-b \pm \sqrt{b^2 -4ac}}{2a}
and perform a special gesture.
After that, he can hear this line as
"x sub 1 comma 2 end sub equals the fraction with numerator negative b plus
or minus the square root of b squared minus 4 a c and denominator 2 a"
nvMathViewer is a solution for those who don't know LaTeX or AsciiMath, but
need to read formulas like this sometimes.
Best regards, Nikita.

-----Original Message-----
From: nvda-addons@nvda-addons.groups.io <nvda-addons@nvda-addons.groups.io>
On Behalf Of James Scholes
Sent: Monday, September 14, 2020 5:29 PM
To: nvda-addons@nvda-addons.groups.io
Subject: Re: [nvda-addons] nvMathViewer add-on for viewing math content in
LaTeX and AsciiMath notations as MathML

How does this differ from MathPlayer and the support already present in
NVDA?

Regards,

James Scholes

On 12/09/2020 at 1:33 pm, Nikita wrote:
Hello everybody!

nvMathViewer has been released. It is an a add-on that can be used to
view mathematical content in LaTeX and AsciiMath notations as MathML.

These notations are widely used to write mathematical symbols and
formulas in computer systems. However, understanding LaTeX and AsciiMath
requires special knowledge and skills that the average user may not
have, such as a simple schoolboy or a humanitarian student. In addition,
reading these notations directly may not be convenient enough, because
it does not provide additional opportunities for analyzing the structure
of formulas.

nvMathViewer solves these problems and enables blind users to quickly
view any LaTeX or AsciiMath notations using special functions of NVDA
for non-visual reading mathematical content and structural navigation
through it.

Links:

Add-on for NVDA 2019.3 and newer -
https://tseykovets.ru/download/nvda/nvMathViewer.nvda-addon

Source code - https://github.com/tseykovets/nvmathviewer

Best regards, Nikita.


Krishna Verma
 

On Mon, 14 Sep, 2020, 9:37 PM Nikita, <nikitamailings@...> wrote:
>
> Hi James,
> nvMathViewer solves other problems. It does not replace MathPlayer or
> Access8Math, but complements them.
> For example, there is a user who doesn't know LaTeX, but wants to read a
> formula like this.
> nvMathViewer will display LaTeX as MathML and then the user can view it
> using MathPlayer.
> The user needs to select a line
> x_{1, 2} = \frac{-b \pm \sqrt{b^2 -4ac}}{2a}
> and perform a special gesture.
> After that, he can hear this line as
> "x sub 1 comma 2 end sub equals the fraction with numerator negative b plus
> or minus the square root of b squared minus 4 a c and denominator 2 a"
> nvMathViewer is a solution for those who don't know LaTeX or AsciiMath, but
> need to read formulas like this sometimes.
> Best regards, Nikita.
>
> -----Original Message-----
> From: nvda-addons@nvda-addons.groups.io <nvda-addons@nvda-addons.groups.io>
> On Behalf Of James Scholes
> Sent: Monday, September 14, 2020 5:29 PM
> To: nvda-addons@nvda-addons.groups.io
> Subject: Re: [nvda-addons] nvMathViewer add-on for viewing math content in
> LaTeX and AsciiMath notations as MathML
>
> How does this differ from MathPlayer and the support already present in
> NVDA?
>
> Regards,
>
> James Scholes
>
> On 12/09/2020 at 1:33 pm, Nikita wrote:
> > Hello everybody!
> >
> > nvMathViewer has been released. It is an a add-on that can be used to
> > view mathematical content in LaTeX and AsciiMath notations as MathML.
> >
> > These notations are widely used to write mathematical symbols and
> > formulas in computer systems. However, understanding LaTeX and AsciiMath
> > requires special knowledge and skills that the average user may not
> > have, such as a simple schoolboy or a humanitarian student. In addition,
> > reading these notations directly may not be convenient enough, because
> > it does not provide additional opportunities for analyzing the structure
> > of formulas.
> >
> > nvMathViewer solves these problems and enables blind users to quickly
> > view any LaTeX or AsciiMath notations using special functions of NVDA
> > for non-visual reading mathematical content and structural navigation
> > through it.
> >
> > Links:
> >
> > Add-on for NVDA 2019.3 and newer -
> > https://tseykovets.ru/download/nvda/nvMathViewer.nvda-addon
> >
> > Source code - https://github.com/tseykovets/nvmathviewer
> >
> > Best regards, Nikita.
> >
> >
>
>
>
>
>
>
>


rowen brian
 

Hi Nikita.
I did encounter an error. Here is my error log.

The formula for testing: x_{1, 2} = \frac{-b \pm \sqrt{b^2 -4ac}}{2a}

INFO - __main__ (18:53:30.182) - MainThread (13524):
Starting NVDA version 2020.3beta1
INFO - core.main (18:53:30.277) - MainThread (13524):
Config dir: C:\Users\manch\AppData\Roaming\nvda
INFO - config.ConfigManager._loadConfig (18:53:30.277) - MainThread (13524):
Loading config: C:\Users\manch\AppData\Roaming\nvda\nvda.ini
INFO - core.main (18:53:30.352) - MainThread (13524):
Using Windows version 10.0.19041 workstation
INFO - core.main (18:53:30.352) - MainThread (13524):
Using Python version 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:01:55) [MSC v.1900 32 bit (Intel)]
INFO - core.main (18:53:30.352) - MainThread (13524):
Using comtypes version 1.1.7
INFO - core.main (18:53:30.352) - MainThread (13524):
Using configobj version 5.1.0 with validate version 1.0.1
INFO - synthDriverHandler.setSynth (18:53:30.756) - MainThread (13524):
Loaded synthDriver vocalizer_expressive2
INFO - core.main (18:53:30.756) - MainThread (13524):
Using wx version 4.0.3 msw (phoenix) wxWidgets 3.0.5 with six version 1.12.0
INFO - brailleInput.initialize (18:53:30.757) - MainThread (13524):
Braille input initialized
INFO - braille.initialize (18:53:30.758) - MainThread (13524):
Using liblouis version 3.14.0
INFO - braille.initialize (18:53:30.761) - MainThread (13524):
Using pySerial version 3.4
INFO - braille.BrailleHandler.setDisplayByName (18:53:30.771) - MainThread (13524):
Loaded braille display driver brltty, current display has 40 cells.
INFO - core.main (18:53:30.975) - MainThread (13524):
Java Access Bridge support initialized
INFO - _UIAHandler.UIAHandler.MTAThreadFunc (18:53:30.985) - _UIAHandler.UIAHandler.MTAThread (10028):
UIAutomation: IUIAutomation6
DEBUGWARNING - inputCore.InputManager.loadLocaleGestureMap (18:53:31.087) - MainThread (13524):
No locale gesture map for language zh_CN
DEBUGWARNING - touchHandler.touchSupported (18:53:31.103) - MainThread (13524):
No touch devices found
INFO - external:globalPlugins.starClip.patch_speak_functions (18:53:31.901) - MainThread (13524):
Patched speak function
IO - external:globalPlugins.fixime.GuessComposition.get_code_by_name (18:53:31.941) - MainThread (13524):
controlconverted to 17
IO - external:globalPlugins.fixime.GuessComposition.get_code_by_name (18:53:31.942) - MainThread (13524):
numpadenterconverted to 13
IO - external:globalPlugins.fixime.GuessComposition.get_code_by_name (18:53:31.942) - MainThread (13524):
enterconverted to 13
INFO - external:globalPlugins.fixime.GlobalPlugin.refreshLayoutString (18:53:31.946) - MainThread (13524):
2052
INFO - external:globalPlugins.fixime.GlobalPlugin.refreshLayoutString (18:53:31.946) - MainThread (13524):
00000804
IO - inputCore.InputManager.executeGesture (18:53:31.949) - winInputHook (1372):
Input: kb(laptop):windows+shift+space
INFO - external:globalPlugins.fixime.GlobalPlugin.refreshLayoutString (18:53:31.951) - MainThread (13524):
2052
INFO - external:globalPlugins.fixime.GlobalPlugin.refreshLayoutString (18:53:31.951) - MainThread (13524):
00000804
IO - inputCore.InputManager.executeGesture (18:53:31.952) - winInputHook (1372):
Input: kb(laptop):windows+space
INFO - external:globalPlugins.fixime.GlobalPlugin.refreshLayoutString (18:53:31.953) - MainThread (13524):
2052
INFO - external:globalPlugins.fixime.GlobalPlugin.refreshLayoutString (18:53:31.953) - MainThread (13524):
00000804
IO - braille.BrailleBuffer.update (18:53:32.029) - MainThread (13524):
Braille regions text: ['NVDA 已启动']
IO - braille.BrailleHandler.update (18:53:32.029) - MainThread (13524):
Braille window dots: 6 6 1345 1236 145 1 - 24 3 13 24 3 145 256 23
INFO - core.main (18:53:32.032) - MainThread (13524):
NVDA initialized
IO - braille.BrailleBuffer.update (18:53:32.046) - MainThread (13524):
Braille regions text: ['桌面 窗口']
INFO - external:globalPlugins.fixime.GlobalPlugin.event_typedCharacter (18:53:32.058) - MainThread (13524):
<NVDAObjects.window.Desktop object at 0x06656F30>
WARNING - characterProcessing.SpeechSymbolProcessor.__init__ (18:53:32.119) - MainThread (13524):
Replacement not defined in locale zh_CN for symbol: ﹔
IO - speech.speak (18:53:32.159) - MainThread (13524):
Speaking [LangChangeCommand ('zh_CN'), '空格', EndUtteranceCommand()]
INFO - external:globalPlugins.fixime.GlobalPlugin.event_typedCharacter (18:53:32.160) - MainThread (13524):
<NVDAObjects.window.Desktop object at 0x06656F30>
IO - speech.speak (18:53:32.160) - MainThread (13524):
Speaking [LangChangeCommand ('zh_CN'), '空格', EndUtteranceCommand()]
DEBUGWARNING - Python warning (18:53:32.192) - MainThread (13524):
C:\Program Files (x86)\NVDA\library.zip\api.py:287: DeprecationWarning: Yield() is deprecated
IO - speech.speak (18:53:32.193) - MainThread (13524):
Speaking [LangChangeCommand ('zh_CN'), '任务栏', CancellableSpeech (still valid devInfo( isCanceledCache: False, isValidCallback: True, isValidCallbackDevInfo:  )]
IO - braille.BrailleBuffer.update (18:53:32.193) - MainThread (13524):
Braille regions text: ['任务栏']
IO - inputCore.InputManager.executeGesture (18:53:32.938) - winInputHook (1372):
Input: kb(laptop):alt+tab
INFO - external:globalPlugins.fixime.GlobalPlugin.event_typedCharacter (18:53:32.948) - MainThread (13524):
<NVDAObjects.IAccessible.Taskbar object at 0x0AA05530>
IO - speech.speak (18:53:33.041) - MainThread (13524):
Speaking [LangChangeCommand ('zh_CN'), '*无标题 - 记事本', CancellableSpeech (still valid devInfo( isCanceledCache: False, isValidCallback: True, isValidCallbackDevInfo:  )]
IO - braille.BrailleBuffer.update (18:53:33.042) - MainThread (13524):
Braille regions text: ['*无标题 - 记事本']
IO - braille.BrailleHandler.update (18:53:33.042) - MainThread (13524):
Braille window dots: 35 35 136 2 12 345 1 2345 24 2 - 36 - 1245 24 23 156 23 12 356 3
IO - speech.speak (18:53:33.179) - MainThread (13524):
Speaking [LangChangeCommand ('zh_CN'), '*无标题 - 记事本', CancellableSpeech (still valid devInfo( isCanceledCache: False, isValidCallback: True, isValidCallbackDevInfo:  )]
IO - braille.BrailleBuffer.update (18:53:33.180) - MainThread (13524):
Braille regions text: ['*无标题 - 记事本']
IO - braille.BrailleHandler.update (18:53:33.180) - MainThread (13524):
Braille window dots: 35 35 136 2 12 345 1 2345 24 2 - 36 - 1245 24 23 156 23 12 356 3
INFO - external:globalPlugins.fixime.GlobalPlugin.add_capture_function (18:53:33.225) - MainThread (13524):
Added capture function
IO - speech.speak (18:53:33.228) - MainThread (13524):
Speaking [LangChangeCommand ('zh_CN'), '文本编辑器', '编辑框', '多行', CancellableSpeech (still valid devInfo( isCanceledCache: False, isValidCallback: True, isValidCallbackDevInfo:  ), 'x_{1, 2} = \\frac{-b \\pm \\sqrt{b^2 -4ac}}{2a}']
IO - braille.BrailleBuffer.update (18:53:33.232) - MainThread (13524):
Braille regions text: ['*无标题 - 记事本 ', '文本编辑器 菜单栏 可编辑 ', 'x_{1, 2} = \\frac{-b \\pm \\sqrt{b^2 -4ac}}{2a} ']
IO - braille.BrailleHandler.update (18:53:33.233) - MainThread (13524):
Braille window dots: 456 16 56 234 12345 1235 2345 56 36 12 - 4 26 3456 12 - 36 3456 145 56 1 14 36 23 36 23 56 36 3456 12 56 1 36 23 -
IO - braille.BrailleHandler.update (18:53:33.235) - MainThread (13524):
Braille window dots: 456 16 56 234 12345 1235 2345 56 36 12 - 4 26 3456 12 - 36 3456 145 56 1 14 36 23 36 23 56 36 3456 12 56 1 36 23 -
IO - braille.BrailleBuffer.update (18:53:33.243) - MainThread (13524):
Braille regions text: ['*无标题 - 记事本 ', '文本编辑器 菜单栏 可编辑 ', 'x_{1, 2} = \\frac{-b \\pm \\sqrt{b^2 -4ac}}{2a} ']
IO - braille.BrailleHandler.update (18:53:33.243) - MainThread (13524):
Braille window dots: 456 16 56 234 12345 1235 2345 56 36 12 - 4 26 3456 12 - 36 3456 145 56 1 14 36 23 36 23 56 36 3456 12 56 1 36 23 -
IO - braille.BrailleHandler.update (18:53:33.245) - MainThread (13524):
Braille window dots: 456 16 56 234 12345 1235 2345 56 36 12 - 4 26 3456 12 - 36 3456 145 56 1 14 36 23 36 23 56 36 3456 12 56 1 36 23 -
IO - inputCore.InputManager.executeGesture (18:53:33.774) - winInputHook (1372):
Input: kb(laptop):control+a
INFO - external:globalPlugins.fixime.GuessComposition.GuessedCompositionStatus.add_gesture (18:53:33.774) - winInputHook (1372):
Name:
control+a
ID:
control+a
vkCode:
65
IO - speech.speak (18:53:33.793) - MainThread (13524):
Speaking [LangChangeCommand ('zh_CN'), 'x_{1, 2} = \\frac{-b \\pm \\sqrt{b^2 -4ac}}{2a},已选择']
IO - braille.BrailleBuffer.update (18:53:33.796) - MainThread (13524):
Braille regions text: ['*无标题 - 记事本 ', '文本编辑器 菜单栏 可编辑 ', 'x_{1, 2} = \\frac{-b \\pm \\sqrt{b^2 -4ac}}{2a} ']
IO - braille.BrailleHandler.update (18:53:33.797) - MainThread (13524):
Braille window dots: 134678 78 4678 3678 5678 3678 345678 178 278 78 345678 1278 3678 2378 78 578 235678 78 45678 1678 5678 12478 123578 178 1478 5678 3678 3678 1278 78 45678 1678 5678 123478 13478 78 45678 1678 5678 23478
IO - braille.BrailleHandler.update (18:53:33.799) - MainThread (13524):
Braille window dots: 134678 78 4678 3678 5678 3678 345678 178 278 78 345678 1278 3678 2378 78 578 235678 78 45678 1678 5678 12478 123578 178 1478 5678 3678 3678 1278 78 45678 1678 5678 123478 13478 78 45678 1678 5678 23478
IO - inputCore.InputManager.executeGesture (18:53:34.836) - winInputHook (1372):
Input: kb(laptop):shift+NVDA+i
INFO - external:globalPlugins.fixime.GuessComposition.GuessedCompositionStatus.add_gesture (18:53:34.836) - winInputHook (1372):
Name:
shift+NVDA+i
ID:
shift+NVDA+i
vkCode:
73
IO - speech.speak (18:53:34.854) - Thread-4 (1512):
Speaking [LangChangeCommand ('zh_CN'), 'Convert LaTeX']
IO - braille.BrailleBuffer.update (18:53:34.855) - Thread-4 (1512):
Braille regions text: ['Convert LaTeX']
IO - braille.BrailleHandler.update (18:53:34.855) - Thread-4 (1512):
Braille window dots: 6 14 135 1345 1236 15 1235 2345 - 6 123 1 6 2345 15 6 1346
ERROR - stderr (18:53:34.858) - Thread-4 (1512):
Exception in thread Thread-4:
Traceback (most recent call last):
  File "threading.pyc", line 926, in _bootstrap_inner
  File "threading.pyc", line 870, in run
  File "C:\Users\manch\AppData\Roaming\nvda\addons\nvMathViewer\globalPlugins\nvMathViewer\__init__.py", line 120, in showMathML
    ui.message(_("Convert {format}").format(format=format))
  File "ui.pyc", line 78, in message
  File "braille.pyc", line 1873, in message
  File "braille.pyc", line 1887, in _resetMessageTimer
  File "wx\core.pyc", line 3284, in __init__
  File "wx\core.pyc", line 3305, in Start
wx._core.wxAssertionError: C++ assertion "wxThread::IsMain()" failed at ..\..\src\common\timerimpl.cpp(60) in wxTimerImpl::Start(): timer can only be started from the main thread
IO - inputCore.InputManager.executeGesture (18:53:37.728) - winInputHook (1372):
Input: kb(laptop):NVDA+f1
INFO - external:globalPlugins.fixime.GuessComposition.GuessedCompositionStatus.add_gesture (18:53:37.728) - winInputHook (1372):
Name:
NVDA+f1
ID:
NVDA+f1
vkCode:
112
INFO - globalCommands.GlobalCommands.script_navigatorObject_devInfo (18:53:37.857) - MainThread (13524):
Developer info for navigator object:
name: '文本编辑器'
role: ROLE_EDITABLETEXT
roleText: None
states: STATE_MULTILINE, STATE_FOCUSABLE, STATE_FOCUSED
isFocusable: True
hasFocus: True
Python object: <NVDAObjects.Dynamic_IAccessibleEditWindowNVDAObject object at 0x0AA05A30>
Python class mro: (<class 'NVDAObjects.Dynamic_IAccessibleEditWindowNVDAObject'>, <class 'NVDAObjects.IAccessible.IAccessible'>, <class 'NVDAObjects.window.edit.Edit'>, <class 'NVDAObjects.behaviors.EditableTextWithAutoSelectDetection'>, <class 'NVDAObjects.behaviors.EditableText'>, <class 'editableText.EditableText'>, <class 'NVDAObjects.window.Window'>, <class 'NVDAObjects.NVDAObject'>, <class 'documentBase.TextContainerObject'>, <class 'baseObject.ScriptableObject'>, <class 'baseObject.AutoPropertyObject'>, <class 'garbageHandler.TrackedObject'>, <class 'object'>)
description: None
location: RectLTWH(left=109, top=152, width=927, height=393)
value: 'x_{1, 2} = \\frac{-b \\pm \\sqrt{b^2 -4ac}}{2a}'
appModule: <'appModuleHandler' (appName 'notepad', process ID 15168) at address 446e630>
appModule.productName: 'Microsoft® Windows® Operating System'
appModule.productVersion: '10.0.19041.507'
TextInfo: <class 'NVDAObjects.window.edit.EditTextInfo'>
windowHandle: 1312054
windowClassName: 'Edit'
windowControlID: 15
windowStyle: 1345323268
extendedWindowStyle: 0
windowThreadID: 6664
windowText: 'x_{1, 2} = \\frac{-b \\pm \\sqrt{b^2 -4ac}}{2a}'
displayText: 'x_{ ,  } = \\frac{-b \\pm \\sqrt{b^  - ac}}{ a}'
IAccessibleObject: <POINTER(IAccessible) ptr=0x68aa358 at aa76350>
IAccessibleChildID: 0
IAccessible event parameters: windowHandle=1312054, objectID=-4, childID=0
IAccessible accName: '文本编辑器'
IAccessible accRole: ROLE_SYSTEM_TEXT
IAccessible accState: STATE_SYSTEM_FOCUSED, STATE_SYSTEM_FOCUSABLE, STATE_SYSTEM_VALID (1048580)
IAccessible accDescription: None
IAccessible accValue: 'x_{1, 2} = \\frac{-b \\pm \\sqrt{b^2 -4ac}}{2a}'
 


James Scholes
 

Hi Nikita, thanks for that explanation and for your work on this. Sounds superb.

Regards,

James Scholes

On 14/09/2020 at 11:07 am, Nikita wrote:
Hi James,
nvMathViewer solves other problems. It does not replace MathPlayer or
Access8Math, but complements them.
For example, there is a user who doesn't know LaTeX, but wants to read a
formula like this.
nvMathViewer will display LaTeX as MathML and then the user can view it
using MathPlayer.
The user needs to select a line
x_{1, 2} = \frac{-b \pm \sqrt{b^2 -4ac}}{2a}
and perform a special gesture.
After that, he can hear this line as
"x sub 1 comma 2 end sub equals the fraction with numerator negative b plus
or minus the square root of b squared minus 4 a c and denominator 2 a"
nvMathViewer is a solution for those who don't know LaTeX or AsciiMath, but
need to read formulas like this sometimes.
Best regards, Nikita.
-----Original Message-----
From: nvda-addons@nvda-addons.groups.io <nvda-addons@nvda-addons.groups.io>
On Behalf Of James Scholes
Sent: Monday, September 14, 2020 5:29 PM
To: nvda-addons@nvda-addons.groups.io
Subject: Re: [nvda-addons] nvMathViewer add-on for viewing math content in
LaTeX and AsciiMath notations as MathML
How does this differ from MathPlayer and the support already present in
NVDA?
Regards,
James Scholes
On 12/09/2020 at 1:33 pm, Nikita wrote:
Hello everybody!
nvMathViewer has been released. It is an a add-on that can be used to view mathematical content in LaTeX and AsciiMath notations as MathML.
These notations are widely used to write mathematical symbols and formulas in computer systems. However, understanding LaTeX and AsciiMath requires special knowledge and skills that the average user may not have, such as a simple schoolboy or a humanitarian student. In addition, reading these notations directly may not be convenient enough, because it does not provide additional opportunities for analyzing the structure of formulas.
nvMathViewer solves these problems and enables blind users to quickly view any LaTeX or AsciiMath notations using special functions of NVDA for non-visual reading mathematical content and structural navigation through it.
Links:
Add-on for NVDA 2019.3 and newer - https://tseykovets.ru/download/nvda/nvMathViewer.nvda-addon
Source code - https://github.com/tseykovets/nvmathviewer
Best regards, Nikita.


Nikita
 

Hi Rowen,

Please tell me if this error occurs every time or from time to time?

Best regards, Nikita.

 

From: nvda-addons@nvda-addons.groups.io <nvda-addons@nvda-addons.groups.io> On Behalf Of rowen brian
Sent: Wednesday, September 16, 2020 2:00 PM
To: nvda-addons@nvda-addons.groups.io
Subject: Re: [nvda-addons] nvMathViewer add-on for viewing math content in LaTeX and AsciiMath notations as MathML

 

Hi Nikita.
I did encounter an error. Here is my error log.

The formula for testing: x_{1, 2} = \frac{-b \pm \sqrt{b^2 -4ac}}{2a}

INFO - __main__ (18:53:30.182) - MainThread (13524):

Starting NVDA version 2020.3beta1

INFO - core.main (18:53:30.277) - MainThread (13524):

Config dir: C:\Users\manch\AppData\Roaming\nvda

INFO - config.ConfigManager._loadConfig (18:53:30.277) - MainThread (13524):

Loading config: C:\Users\manch\AppData\Roaming\nvda\nvda.ini

INFO - core.main (18:53:30.352) - MainThread (13524):

Using Windows version 10.0.19041 workstation

INFO - core.main (18:53:30.352) - MainThread (13524):

Using Python version 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:01:55) [MSC v.1900 32 bit (Intel)]

INFO - core.main (18:53:30.352) - MainThread (13524):

Using comtypes version 1.1.7

INFO - core.main (18:53:30.352) - MainThread (13524):

Using configobj version 5.1.0 with validate version 1.0.1

INFO - synthDriverHandler.setSynth (18:53:30.756) - MainThread (13524):

Loaded synthDriver vocalizer_expressive2

INFO - core.main (18:53:30.756) - MainThread (13524):

Using wx version 4.0.3 msw (phoenix) wxWidgets 3.0.5 with six version 1.12.0

INFO - brailleInput.initialize (18:53:30.757) - MainThread (13524):

Braille input initialized

INFO - braille.initialize (18:53:30.758) - MainThread (13524):

Using liblouis version 3.14.0

INFO - braille.initialize (18:53:30.761) - MainThread (13524):

Using pySerial version 3.4

INFO - braille.BrailleHandler.setDisplayByName (18:53:30.771) - MainThread (13524):

Loaded braille display driver brltty, current display has 40 cells.

INFO - core.main (18:53:30.975) - MainThread (13524):

Java Access Bridge support initialized

INFO - _UIAHandler.UIAHandler.MTAThreadFunc (18:53:30.985) - _UIAHandler.UIAHandler.MTAThread (10028):

UIAutomation: IUIAutomation6

DEBUGWARNING - inputCore.InputManager.loadLocaleGestureMap (18:53:31.087) - MainThread (13524):

No locale gesture map for language zh_CN

DEBUGWARNING - touchHandler.touchSupported (18:53:31.103) - MainThread (13524):

No touch devices found

INFO - external:globalPlugins.starClip.patch_speak_functions (18:53:31.901) - MainThread (13524):

Patched speak function

IO - external:globalPlugins.fixime.GuessComposition.get_code_by_name (18:53:31.941) - MainThread (13524):

controlconverted to 17

IO - external:globalPlugins.fixime.GuessComposition.get_code_by_name (18:53:31.942) - MainThread (13524):

numpadenterconverted to 13

IO - external:globalPlugins.fixime.GuessComposition.get_code_by_name (18:53:31.942) - MainThread (13524):

enterconverted to 13

INFO - external:globalPlugins.fixime.GlobalPlugin.refreshLayoutString (18:53:31.946) - MainThread (13524):

2052

INFO - external:globalPlugins.fixime.GlobalPlugin.refreshLayoutString (18:53:31.946) - MainThread (13524):

00000804

IO - inputCore.InputManager.executeGesture (18:53:31.949) - winInputHook (1372):

Input: kb(laptop):windows+shift+space

INFO - external:globalPlugins.fixime.GlobalPlugin.refreshLayoutString (18:53:31.951) - MainThread (13524):

2052

INFO - external:globalPlugins.fixime.GlobalPlugin.refreshLayoutString (18:53:31.951) - MainThread (13524):

00000804

IO - inputCore.InputManager.executeGesture (18:53:31.952) - winInputHook (1372):

Input: kb(laptop):windows+space

INFO - external:globalPlugins.fixime.GlobalPlugin.refreshLayoutString (18:53:31.953) - MainThread (13524):

2052

INFO - external:globalPlugins.fixime.GlobalPlugin.refreshLayoutString (18:53:31.953) - MainThread (13524):

00000804

IO - braille.BrailleBuffer.update (18:53:32.029) - MainThread (13524):

Braille regions text: ['NVDA 已启']

IO - braille.BrailleHandler.update (18:53:32.029) - MainThread (13524):

Braille window dots: 6 6 1345 1236 145 1 - 24 3 13 24 3 145 256 23

INFO - core.main (18:53:32.032) - MainThread (13524):

NVDA initialized

IO - braille.BrailleBuffer.update (18:53:32.046) - MainThread (13524):

Braille regions text: ['桌面 窗口']

INFO - external:globalPlugins.fixime.GlobalPlugin.event_typedCharacter (18:53:32.058) - MainThread (13524):

<NVDAObjects.window.Desktop object at 0x06656F30>

WARNING - characterProcessing.SpeechSymbolProcessor.__init__ (18:53:32.119) - MainThread (13524):

Replacement not defined in locale zh_CN for symbol:

IO - speech.speak (18:53:32.159) - MainThread (13524):

Speaking [LangChangeCommand ('zh_CN'), '空格', EndUtteranceCommand()]

INFO - external:globalPlugins.fixime.GlobalPlugin.event_typedCharacter (18:53:32.160) - MainThread (13524):

<NVDAObjects.window.Desktop object at 0x06656F30>

IO - speech.speak (18:53:32.160) - MainThread (13524):

Speaking [LangChangeCommand ('zh_CN'), '空格', EndUtteranceCommand()]

DEBUGWARNING - Python warning (18:53:32.192) - MainThread (13524):

C:\Program Files (x86)\NVDA\library.zip\api.py:287: DeprecationWarning: Yield() is deprecated

IO - speech.speak (18:53:32.193) - MainThread (13524):

Speaking [LangChangeCommand ('zh_CN'), '务栏', CancellableSpeech (still valid devInfo( isCanceledCache: False, isValidCallback: True, isValidCallbackDevInfo:  )]

IO - braille.BrailleBuffer.update (18:53:32.193) - MainThread (13524):

Braille regions text: ['务栏']

IO - inputCore.InputManager.executeGesture (18:53:32.938) - winInputHook (1372):

Input: kb(laptop):alt+tab

INFO - external:globalPlugins.fixime.GlobalPlugin.event_typedCharacter (18:53:32.948) - MainThread (13524):

<NVDAObjects.IAccessible.Taskbar object at 0x0AA05530>

IO - speech.speak (18:53:33.041) - MainThread (13524):

Speaking [LangChangeCommand ('zh_CN'), '*标题 - 记事本', CancellableSpeech (still valid devInfo( isCanceledCache: False, isValidCallback: True, isValidCallbackDevInfo:  )]

IO - braille.BrailleBuffer.update (18:53:33.042) - MainThread (13524):

Braille regions text: ['*标题 - 记事本']

IO - braille.BrailleHandler.update (18:53:33.042) - MainThread (13524):

Braille window dots: 35 35 136 2 12 345 1 2345 24 2 - 36 - 1245 24 23 156 23 12 356 3

IO - speech.speak (18:53:33.179) - MainThread (13524):

Speaking [LangChangeCommand ('zh_CN'), '*标题 - 记事本', CancellableSpeech (still valid devInfo( isCanceledCache: False, isValidCallback: True, isValidCallbackDevInfo:  )]

IO - braille.BrailleBuffer.update (18:53:33.180) - MainThread (13524):

Braille regions text: ['*标题 - 记事本']

IO - braille.BrailleHandler.update (18:53:33.180) - MainThread (13524):

Braille window dots: 35 35 136 2 12 345 1 2345 24 2 - 36 - 1245 24 23 156 23 12 356 3

INFO - external:globalPlugins.fixime.GlobalPlugin.add_capture_function (18:53:33.225) - MainThread (13524):

Added capture function

IO - speech.speak (18:53:33.228) - MainThread (13524):

Speaking [LangChangeCommand ('zh_CN'), '文本编辑器', '编辑框', '多行', CancellableSpeech (still valid devInfo( isCanceledCache: False, isValidCallback: True, isValidCallbackDevInfo:  ), 'x_{1, 2} = \\frac{-b \\pm \\sqrt{b^2 -4ac}}{2a}']

IO - braille.BrailleBuffer.update (18:53:33.232) - MainThread (13524):

Braille regions text: ['*标题 - 记事本 ', '文本编辑器 单栏 编辑 ', 'x_{1, 2} = \\frac{-b \\pm \\sqrt{b^2 -4ac}}{2a} ']

IO - braille.BrailleHandler.update (18:53:33.233) - MainThread (13524):

Braille window dots: 456 16 56 234 12345 1235 2345 56 36 12 - 4 26 3456 12 - 36 3456 145 56 1 14 36 23 36 23 56 36 3456 12 56 1 36 23 -

IO - braille.BrailleHandler.update (18:53:33.235) - MainThread (13524):

Braille window dots: 456 16 56 234 12345 1235 2345 56 36 12 - 4 26 3456 12 - 36 3456 145 56 1 14 36 23 36 23 56 36 3456 12 56 1 36 23 -

IO - braille.BrailleBuffer.update (18:53:33.243) - MainThread (13524):

Braille regions text: ['*标题 - 记事本 ', '文本编辑器 单栏 编辑 ', 'x_{1, 2} = \\frac{-b \\pm \\sqrt{b^2 -4ac}}{2a} ']

IO - braille.BrailleHandler.update (18:53:33.243) - MainThread (13524):

Braille window dots: 456 16 56 234 12345 1235 2345 56 36 12 - 4 26 3456 12 - 36 3456 145 56 1 14 36 23 36 23 56 36 3456 12 56 1 36 23 -

IO - braille.BrailleHandler.update (18:53:33.245) - MainThread (13524):

Braille window dots: 456 16 56 234 12345 1235 2345 56 36 12 - 4 26 3456 12 - 36 3456 145 56 1 14 36 23 36 23 56 36 3456 12 56 1 36 23 -

IO - inputCore.InputManager.executeGesture (18:53:33.774) - winInputHook (1372):

Input: kb(laptop):control+a

INFO - external:globalPlugins.fixime.GuessComposition.GuessedCompositionStatus.add_gesture (18:53:33.774) - winInputHook (1372):

Name:

control+a

ID:

control+a

vkCode:

65

IO - speech.speak (18:53:33.793) - MainThread (13524):

Speaking [LangChangeCommand ('zh_CN'), 'x_{1, 2} = \\frac{-b \\pm \\sqrt{b^2 -4ac}}{2a},已选择']

IO - braille.BrailleBuffer.update (18:53:33.796) - MainThread (13524):

Braille regions text: ['*标题 - 记事本 ', '文本编辑器 单栏 编辑 ', 'x_{1, 2} = \\frac{-b \\pm \\sqrt{b^2 -4ac}}{2a} ']

IO - braille.BrailleHandler.update (18:53:33.797) - MainThread (13524):

Braille window dots: 134678 78 4678 3678 5678 3678 345678 178 278 78 345678 1278 3678 2378 78 578 235678 78 45678 1678 5678 12478 123578 178 1478 5678 3678 3678 1278 78 45678 1678 5678 123478 13478 78 45678 1678 5678 23478

IO - braille.BrailleHandler.update (18:53:33.799) - MainThread (13524):

Braille window dots: 134678 78 4678 3678 5678 3678 345678 178 278 78 345678 1278 3678 2378 78 578 235678 78 45678 1678 5678 12478 123578 178 1478 5678 3678 3678 1278 78 45678 1678 5678 123478 13478 78 45678 1678 5678 23478

IO - inputCore.InputManager.executeGesture (18:53:34.836) - winInputHook (1372):

Input: kb(laptop):shift+NVDA+i

INFO - external:globalPlugins.fixime.GuessComposition.GuessedCompositionStatus.add_gesture (18:53:34.836) - winInputHook (1372):

Name:

shift+NVDA+i

ID:

shift+NVDA+i

vkCode:

73

IO - speech.speak (18:53:34.854) - Thread-4 (1512):

Speaking [LangChangeCommand ('zh_CN'), 'Convert LaTeX']

IO - braille.BrailleBuffer.update (18:53:34.855) - Thread-4 (1512):

Braille regions text: ['Convert LaTeX']

IO - braille.BrailleHandler.update (18:53:34.855) - Thread-4 (1512):

Braille window dots: 6 14 135 1345 1236 15 1235 2345 - 6 123 1 6 2345 15 6 1346

ERROR - stderr (18:53:34.858) - Thread-4 (1512):

Exception in thread Thread-4:

Traceback (most recent call last):

  File "threading.pyc", line 926, in _bootstrap_inner

  File "threading.pyc", line 870, in run

  File "C:\Users\manch\AppData\Roaming\nvda\addons\nvMathViewer\globalPlugins\nvMathViewer\__init__.py", line 120, in showMathML

    ui.message(_("Convert {format}").format(format=format))

  File "ui.pyc", line 78, in message

  File "braille.pyc", line 1873, in message

  File "braille.pyc", line 1887, in _resetMessageTimer

  File "wx\core.pyc", line 3284, in __init__

  File "wx\core.pyc", line 3305, in Start

wx._core.wxAssertionError: C++ assertion "wxThread::IsMain()" failed at ..\..\src\common\timerimpl.cpp(60) in wxTimerImpl::Start(): timer can only be started from the main thread

IO - inputCore.InputManager.executeGesture (18:53:37.728) - winInputHook (1372):

Input: kb(laptop):NVDA+f1

INFO - external:globalPlugins.fixime.GuessComposition.GuessedCompositionStatus.add_gesture (18:53:37.728) - winInputHook (1372):

Name:

NVDA+f1

ID:

NVDA+f1

vkCode:

112

INFO - globalCommands.GlobalCommands.script_navigatorObject_devInfo (18:53:37.857) - MainThread (13524):

Developer info for navigator object:

name: '文本编辑器'

role: ROLE_EDITABLETEXT

roleText: None

states: STATE_MULTILINE, STATE_FOCUSABLE, STATE_FOCUSED

isFocusable: True

hasFocus: True

Python object: <NVDAObjects.Dynamic_IAccessibleEditWindowNVDAObject object at 0x0AA05A30>

Python class mro: (<class 'NVDAObjects.Dynamic_IAccessibleEditWindowNVDAObject'>, <class 'NVDAObjects.IAccessible.IAccessible'>, <class 'NVDAObjects.window.edit.Edit'>, <class 'NVDAObjects.behaviors.EditableTextWithAutoSelectDetection'>, <class 'NVDAObjects.behaviors.EditableText'>, <class 'editableText.EditableText'>, <class 'NVDAObjects.window.Window'>, <class 'NVDAObjects.NVDAObject'>, <class 'documentBase.TextContainerObject'>, <class 'baseObject.ScriptableObject'>, <class 'baseObject.AutoPropertyObject'>, <class 'garbageHandler.TrackedObject'>, <class 'object'>)

description: None

location: RectLTWH(left=109, top=152, width=927, height=393)

value: 'x_{1, 2} = \\frac{-b \\pm \\sqrt{b^2 -4ac}}{2a}'

appModule: <'appModuleHandler' (appName 'notepad', process ID 15168) at address 446e630>

appModule.productName: 'Microsoft® Windows® Operating System'

appModule.productVersion: '10.0.19041.507'

TextInfo: <class 'NVDAObjects.window.edit.EditTextInfo'>

windowHandle: 1312054

windowClassName: 'Edit'

windowControlID: 15

windowStyle: 1345323268

extendedWindowStyle: 0

windowThreadID: 6664

windowText: 'x_{1, 2} = \\frac{-b \\pm \\sqrt{b^2 -4ac}}{2a}'

displayText: 'x_{ ,  } = \\frac{-b \\pm \\sqrt{b^  - ac}}{ a}'

IAccessibleObject: <POINTER(IAccessible) ptr=0x68aa358 at aa76350>

IAccessibleChildID: 0

IAccessible event parameters: windowHandle=1312054, objectID=-4, childID=0

IAccessible accName: '文本编辑器'

IAccessible accRole: ROLE_SYSTEM_TEXT

IAccessible accState: STATE_SYSTEM_FOCUSED, STATE_SYSTEM_FOCUSABLE, STATE_SYSTEM_VALID (1048580)

IAccessible accDescription: None

IAccessible accValue: 'x_{1, 2} = \\frac{-b \\pm \\sqrt{b^2 -4ac}}{2a}'

 


rowen brian
 

Hi Nikita.
This error happens every time.
 


rowen brian
 

Hi Nikita
Fortunately, this error has been resolved and I can use the plug-in as expected


Nikita
 

Hi Rowen,

Please tell me exactly how you managed to fix this error.

I am currently fixing an error of nvMathViewer in the Word editor, and would like to fix all the problems right away.

Best regards, Nikita.

 

From: nvda-addons@nvda-addons.groups.io <nvda-addons@nvda-addons.groups.io> On Behalf Of rowen brian
Sent: Friday, September 18, 2020 8:47 AM
To: nvda-addons@nvda-addons.groups.io
Subject: Re: [nvda-addons] nvMathViewer add-on for viewing math content in LaTeX and AsciiMath notations as MathML

 

Hi Nikita

Fortunately, this error has been resolved and I can use the plug-in as expected


rowen brian
 

Hi Nikita
I'm sorry, I don't know how I resolved this error, maybe it's a addons conflict. I'll let you know as soon as I find anything new.
 
In addition, I wonder if only one view window should be allowed. Currently, countless windows can be opened


Nikita
 

Hi evrybody,

I have updated nvMathViewer add-on.

Changes:

1. Added preprocessing of LaTeX notation. Now the "$" characters at both ends of the text, the "\[" characters at the beginning of the text, and the "\]" characters at the end of the text are automatically removed.

2. Fixed error of processing selected text in Microsoft Word and maybe in some other text editors or word processors.

Links are the same:

Add-on for NVDA 2019.3 and newer - https://tseykovets.ru/download/nvda/nvMathViewer.nvda-addon

Source code - https://github.com/tseykovets/nvmathviewer

Best regards, Nikita.


Nikita
 

Hi rowen,

Unfortunately, you cannot limit the number of windows that can be opened.

This is ordinary  NVDA's ui.browseableMessage.

These windows do not give information about their handle.

I have no idea how they can be controlled after opening.

Best regards, Nikita.

 

From: nvda-addons@nvda-addons.groups.io <nvda-addons@nvda-addons.groups.io> On Behalf Of rowen brian
Sent: Saturday, September 19, 2020 7:54 AM
To: nvda-addons@nvda-addons.groups.io
Subject: Re: [nvda-addons] nvMathViewer add-on for viewing math content in LaTeX and AsciiMath notations as MathML

 

Hi Nikita

I'm sorry, I don't know how I resolved this error, maybe it's a addons conflict. I'll let you know as soon as I find anything new.

 

In addition, I wonder if only one view window should be allowed. Currently, countless windows can be opened


rowen brian
 

Hi Nikita,
Anyway, thank you for bringing us such excellent add-ons.
Thanks


Robert Hänggi
 

If I'm not mistaken, the browseableMessage is an internet explorer extension.
It could be thus controlled with the Ishell com interface.
Robert

On 20/09/2020, rowen brian <manchen0528@...> wrote:
Hi Nikita,
Anyway, thank you for bringing us such excellent add-ons.
Thanks






Nikita
 

Hi rowen,

Perhaps I misunderstood you.

I thought you were writing about the ability to open at most one window for different formulas.

Perhaps you had in mind the problem of opening multiple windows for the same formula when you press a gesture several times in a row.

I fixed this problem today.

Now in these cases a sound signal will be played, and another window will not open.

Links are the same:

Add-on for NVDA 2019.3 and newer - https://tseykovets.ru/download/nvda/nvMathViewer.nvda-addon

Source code - https://github.com/tseykovets/nvmathviewer

Best regards, Nikita.

 

From: nvda-addons@nvda-addons.groups.io <nvda-addons@nvda-addons.groups.io> On Behalf Of rowen brian
Sent: Saturday, September 19, 2020 7:54 AM
To: nvda-addons@nvda-addons.groups.io
Subject: Re: [nvda-addons] nvMathViewer add-on for viewing math content in LaTeX and AsciiMath notations as MathML

 

Hi Nikita

I'm sorry, I don't know how I resolved this error, maybe it's a addons conflict. I'll let you know as soon as I find anything new.

 

In addition, I wonder if only one view window should be allowed. Currently, countless windows can be opened