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 = QVBoxLayout() self.text_edit = QTextEdit() self.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 = QWebEngineView() layout.addWidget(self.text_edit) layout.addWidget(self.web_view) container = QWidget() container.setLayout(layout) self.setCentralWidget(container) self.text_edit.textChanged.connect(self.update_preview) self.update_preview() def 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('。', '。<br>') html = f""" <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script> MathJax = {{ tex: {{ inlineMath: [['$', '$'], ['\\(', '\\)']], displayMath: [['$$', '$$'], ['\\\\[', '\\\\]']], processEscapes: true }}, startup: {{ ready: () => {{ MathJax.startup.defaultReady(); MathJax.typesetPromise(); }} }} }}; </script> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.2/es5/tex-mml-chtml.js"></script> </head> <body> <div id="math-content">{latex_content}</div> </body> </html> """ self.web_view.setHtml('', QUrl('about:blank')) self.web_view.setHtml(html, QUrl.fromLocalFile(''))if __name__ == "__main__": app = QApplication(sys.argv) window = MathJaxEditor() window.show() sys.exit(app.exec_())
这是一个基于PyQt5和MathJax的LaTeX公式编辑器,具有以下特点和功能:
1. 基本功能 :
- 提供文本编辑区域用于输入LaTeX公式
- 实时预览渲染后的数学公式
- 支持行内公式(使用$...$)和块级公式(使用[...])
2. 自动处理功能 :
- 自动将(...)格式转换为$...$格式
- 自动为未加定界符的公式添加$...$
- 在句号后自动添加HTML换行标签
3. 技术实现 :
- 使用PyQt5创建GUI界面
- 通过QWebEngineView嵌入浏览器引擎
- 调用MathJax 3.2.2进行公式渲染
- 使用正则表达式处理特殊格式
4. 使用说明 :
- 直接输入LaTeX公式即可实时预览
- 行内公式使用$...$或(...)
- 块级公式使用[...]或$$...$$
- 普通文本中的句号会自动换行显示
5. 注意事项 :
- 需要安装PyQt5和PyQtWebEngine
- 需要网络连接加载MathJax库
- 中文文本需使用UTF-8编码
这个编辑器特别适合需要频繁编写数学公式的用户,可以实时看到公式渲染效果,提高工作效率。

4月3日版本更正确