Python Markdown搞砸了数学公式

时间:2017-11-03 23:15:33

标签: python markdown python-markdown

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

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

转换为

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

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

1 个答案:

答案 0 :(得分:5)

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

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

  1. 以原始HTML包装Math函数。 Markdown不在原始块级HTML中处理。所以将数学包装在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团队的其他成员开发)。