diff --git a/packages/flutter_html_math/lib/flutter_html_math.dart b/packages/flutter_html_math/lib/flutter_html_math.dart
index 8785d410de..088635f321 100644
--- a/packages/flutter_html_math/lib/flutter_html_math.dart
+++ b/packages/flutter_html_math/lib/flutter_html_math.dart
@@ -39,7 +39,9 @@ CustomRenderMatcher mathMatcher() => (context) {
String _parseMathRecursive(dom.Node node, String parsed) {
if (node is dom.Element) {
List nodeList = node.nodes.whereType().toList();
- if (node.localName == "math" || node.localName == "mrow") {
+ if (node.localName == "math" ||
+ node.localName == "mrow" ||
+ node.localName == "mtr") {
for (var element in nodeList) {
parsed = _parseMathRecursive(element, parsed);
}
@@ -98,6 +100,17 @@ String _parseMathRecursive(dom.Node node, String parsed) {
parsed = parsed + node.text.trim();
}
}
+ if (node.localName == 'mtable') {
+ String inner =
+ nodeList.map((e) => _parseMathRecursive(e, '')).join(' \\\\');
+ parsed = '$parsed\\begin{matrix}$inner\\end{matrix}';
+ }
+ if (node.localName == "mtd") {
+ for (var element in nodeList) {
+ parsed = _parseMathRecursive(element, parsed);
+ }
+ parsed = '$parsed & ';
+ }
}
return parsed;
}