MathML to Plain Text Converter
source link: https://www.codeproject.com/Tips/5331794/MathML-to-Plain-Text-Converter
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Introduction
There seem to be few resources converting MathML code into plain text. A good reason is there is no consensus in how to format some math expressions. But for many expressions involving (+,-,/,*,^,=) operators, here is one possible converter.
The Classes Engaged
- Class
MathToString
prepares thestring
with theMathML
code so thatclass ParseML
can perform the detailed parsing.
Preparation
First, the spaces are replaced by empty strings and some special characters are replaced too. Also, some tags not involved in the math expression, like style
tags, are removed. Then any <mfrac>
tag, that stands for a fraction, this is parsed first and replaced in the input string in between "|
" characters so that later it can be recovered by ParseML
class.
Using the Code
To convert, just call the shared method MathToString.convertToString()
:
Dim converted as String = MathMLToString.convertToString(MathMLcodeToConvert)
Basic Principles
The parsing method is a recursive-descent parsing: Parsing Expressions by Recursive Descent.
Evaluation method E
calls T
for any addition or substraction, but T
calls first F
for any multiplication or substraction, and F
calls first P
for any power possible power operation. P
calls first v
to get next token. If there is a "(
" token, v
calls recursively to T
.
E --> T {( "+" | "-" ) T} T --> F {( "*" | "/" ) F} F --> P ["^" F] P --> v | "(" E ")" | "-" T
History
- 12th May, 2022: Initial version
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK