Skip to main content
 首页 » 编程设计

Python Markdown 搞砸了数学公式

2025年05月04日23mq0036

将内容从 markdown 格式转换为 HTML 格式时,如下数学函数

${\{y_{i}, x_{i1}, ..., x_{id}\}}_{i=1}^{n}$  

转换为

${{y_{i}, x_{i1}, ..., x_{id}}}<em>{i=1}^{n}$ 

有没有办法告诉 Python 的 Markdown 不这样做?谢谢!

请您参考如下方法:

是的,数学语法与 Markdown 的语法冲突。您需要告诉解析器不要将其视为 Markdown。

您有几种不同的方法可以做到这一点:

  1. 用原始 HTML 包装 Math 函数。未在原始 block 级 HTML 中处理 Markdown。所以把你的数学封装在一个 div 中:

    <div>${\{y_{i}, x_{i1}, ..., x_{id}\}}_{i=1}^{n}$</div> 
    
  2. 使用 third-party extension (还有 here )它提供了一种将文档的一部分标记为数学的方法。您需要安装其中一个扩展,然后告诉 Python-Markdown 使用它。例如,安装 Python-Markdown-Math ,执行以下操作:

    pip install python-markdown-math 
    

    然后,在您的 Python 代码中,您可以告诉 Markdown 使用扩展:

    markdown.markdown(src, extensions=['mdx-math']) 
    

    请注意,为了避免与用于指定货币的美元符号(正常用法)发生冲突,大多数扩展不支持使用单个美元符号作为包装器。在这种情况下,您将需要使用双美元符号 ($$...$$)。或者您可以像这样打开对单个美元符号的支持:

    markdown.markdown( 
        src,  
        extensions=['mdx_math'],  
        extension_configs={ 
            'mdx_math': {'enable_dollar_delimiter': True} 
        } 
    ) 
    

    顺便说一句,Arithmatex默认情况下,扩展提供对单个美元符号的支持。但是,它是更大的扩展包的一部分。如果您只需要一个,Python-Markdown-Math 就可以满足您的需求(每个都由 Python-Markdown 团队的不同成员开发)。