前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

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

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QTextEdit
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QUrl
import re

class 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
<< 1 >>
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言