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; }