def _convert_command( element: str, elements: List[Any], index: int, iterable: Iterator[int], parent: Element, ): _get_prefix_element(element, parent) if element == r"\substack": parent = SubElement(parent, "mstyle", scriptlevel="1") params, tag, attributes = COMMANDS[element] if len(elements) - 1 < params: mo = SubElement(parent, "mo") mo.text = element[1:] return new_parent = SubElement(parent, tag, attributes) alignment = "" if element in MATRICES and (element.endswith("*") or element == r"\array"): index += 1 alignment = elements[index] next(iterable) if element in (r"\lim", r"\inf", r"\sup", r"\max", r"\min"): limit = SubElement(new_parent, "mo") limit.text = element[1:] for j in range(params): index += 1 param = elements[index] if element == "_" and index == 1 and param == r"\sum": new_parent.tag = "munder" _classify(param, new_parent) elif element == r"\left" or element == r"\right": if param == ".": pass else: symbol = convert_symbol(param) new_parent.text = param if symbol is None else "&#x{};".format( symbol) elif element == r"\array": _convert_array_content(param, new_parent, alignment) elif element in MATRICES: _convert_matrix_content(param, new_parent, alignment, element == r"\substack") else: if isinstance(param, list): _parent = SubElement(new_parent, "mrow") _classify_subgroup(param, _parent) else: _classify(param, new_parent) _get_postfix_element(element, parent) if element in (r"\overline", r"\bar"): mo = SubElement(new_parent, "mo", stretchy="true") mo.text = "¯" elif element == r"\underline": mo = SubElement(new_parent, "mo", stretchy="true") mo.text = "̲" elif element in (r"\overrightarrow", r"\vec"): mo = SubElement(new_parent, "mo", stretchy="true") mo.text = "→" [next(iterable) for _ in range(params)]