defdoExprParse(element:str): """解析表达式, 如果是矩阵符号则要求用户输入矩阵, 否则保持不变""" if element.isalpha(): print("请输入矩阵",element) return getMatrix() else: return element
defgetMatrix(): matrix = [] raw = input() while raw != "": matrix.append(list(map(doMacro,raw.split()))) raw = input() return matrix
defdoMacro(element): """解析宏, 如果是宏则进行相应的替换,否则保持不变""" if element == "|": returnr"\vdots" elif element == "-": returnr"\\cdots" elif element == "\\": returnr"\ddots" else: return element
defdoPrint(expr): print("$$") for v in expr: iftype(v) == type(""): print(v) else: printMatrix(v) print("$$")
defprintMatrix(matrix): print(r"\begin{bmatrix}") for line in matrix: # 元素之间插入分割符, 末尾添加换行符 print(" & ".join(line), r"\\\\") # 插入分隔符的标准做法 print(r"\end{bmatrix}")