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

信息化聊科技 2025-04-04 14:54:57
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日版本更正确

0 阅读:0

信息化聊科技

简介:感谢大家的关注