基于PyQt5和MathJax的LaTeX公式编辑器

360影视 欧美动漫 2025-04-04 01:13 2

摘要:import sysfrom PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QTextEditfrom PyQt5.QtWebEngineWidgets impo

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('。', '。
')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日版本更正确

来源:晟睿教育

相关推荐