import sysfrom PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QTextEditfrom PyQt5.QtWebEngineWidgets import QWebEngineViewfrom PyQt5.QtCore import QUrlimport reclass MathJaxEditor(QMainWindow):def __init__(self):super.__init__self.setWindowTitle("MathJax Editor")self.setGeometry(100, 100, 800, 600)layout = QVBoxLayoutself.text_edit = QTextEditself.text_edit.setPlainText("输入 LaTeX 公式,例如:\n\n""行内公式:$E = mc^2$\n\n""块级公式:\n""\\[\n""x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}\n""\\]")self.web_view = QWebEngineViewlayout.addWidget(self.text_edit)layout.addWidget(self.web_view)container = QWidgetcontainer.setLayout(layout)self.setCentralWidget(container)self.text_edit.textChanged.connect(self.update_preview)self.update_previewdef update_preview(self):latex_content = self.text_edit.toPlainText# 更精确的替换逻辑,只替换成对的\(和\)latex_content = re.sub(r'\\\((.*?)\\\)', r'$\1$', latex_content)# 确保公式被正确的定界符包裹if not any(delim in latex_content for delim in ['$', '$$', '\\[', '\\(']):latex_content = f"${latex_content}$"# 在HTML输出时处理换行latex_content = latex_content.replace('。', '。摘要:import sysfrom PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QTextEditfrom PyQt5.QtWebEngineWidgets impo
')html = f"""MathJax = {{tex: {{inlineMath: [['$', '$'], ['\\(', '\\)']],displayMath: [['$$', '$$'], ['\\\\[', '\\\\]']],processEscapes: true}},startup: {{ready: => {{MathJax.startup.defaultReady;MathJax.typesetPromise;}}}}}};{latex_content}"""self.web_view.setHtml('', QUrl('about:blank'))self.web_view.setHtml(html, QUrl.fromLocalFile(''))if __name__ == "__main__":app = QApplication(sys.argv)window = MathJaxEditorwindow.showsys.exit(app.exec_)
这是一个基于PyQt5和MathJax的LaTeX公式编辑器,具有以下特点和功能:
1. 基本功能 :
- 提供文本编辑区域用于输入LaTeX公式
- 实时预览渲染后的数学公式
- 支持行内公式(使用$...$)和块级公式(使用[...])
2. 自动处理功能 :
- 自动将(...)格式转换为$...$格式
- 自动为未加定界符的公式添加$...$
- 在句号后自动添加HTML换行标签
3. 技术实现 :
- 使用PyQt5创建GUI界面
- 通过QWebEngineView嵌入浏览器引擎
- 调用MathJax 3.2.2进行公式渲染
- 使用正则表达式处理特殊格式
4. 使用说明 :
- 直接输入LaTeX公式即可实时预览
- 行内公式使用$...$或(...)
- 块级公式使用[...]或$$...$$
- 普通文本中的句号会自动换行显示
5. 注意事项 :
- 需要网络连接加载MathJax库
这个编辑器特别适合需要频繁编写数学公式的用户,可以实时看到公式渲染效果,提高工作效率。
4月3日版本更正确
来源:晟睿教育
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!