跳转到主要内容

Python Markdown 的 KaTeX 扩展

项目描述

markdown-katex

这是一个为 Python Markdown 添加 KaTeX 支持的扩展。

```math
f(x) = \int_{-\infty}^\infty
    \hat f(\xi)\,e^{2 \pi i \xi x}
    \,d\xi
```

项目/仓库

MIT License Supported Python Versions CalVer v202406.1035 PyPI Version PyPI Downloads

代码质量/CI

GitHub CI Status GitLab CI Status Type Checked with mypy Code Coverage Code Style: sjfmt

名称 角色 开始日期 结束日期
Manuel Barkhau (mbarkhau@gmail.com) 作者/维护者 2019-05 -

安装

$ pip install markdown-katex
...
$ python -m markdown_katex --version
markdown-katex version:  v202406.1035 (using binary: /usr/local/bin/npx --no-install katex)
0.15.1

此包包含以下二进制文件

  • katex_v0.15.1_node10_x86_64_Linux _ katex_v0.15.1_node10_x86_64_Darwin _ katex_v0.15.1_node12_x86_64_Windows

如果您使用的是不同的平台,或者想使用较新的 katex-cli 版本,您需要通过 npm 安装它

$ npx katex
$ npx katex --version
0.15.1

如果可用,此扩展将始终使用本地安装的 KaTeX 版本,而不是使用此包捆绑的实现。

渲染生成的HTML不需要JavaScript,因此它可以与更有限的渲染器(不支持JavaScript)一起使用,例如 WeasyPrint

用法

可以使用katex.org上的编辑器交互式地创建和编辑公式。它们还提供了一些关于支持的LaTeX子集的良好文档。在Markdown文件中嵌入这些公式时,必须使用特殊语法才能使用KaTeX进行渲染。Markdown有许多语法扩展允许嵌入LaTeX公式,但此包只支持Gitlab引入的语法。

  • 对于行内模式公式:$`...`$
  • 对于显示模式公式:```math

以下是一个使用此语法的示例

此语法的两个主要优势是

  1. Gitlab拥有一个现有的Markdown渲染器,无需下载任何软件即可使用。此实现也使用KaTeX,因此输出应与该扩展完全相同。
  2. 其他Markdown渲染器的回退行为是将原始LaTeX渲染为行内代码或代码块。这意味着它们不会意外地将LaTeX公式解析为Markdown语法。

希望其他渲染器也会采用对该语法的支持

  1. 渲染是在浏览器中使用KaTeX完成的,因此实现工作量应该很小。
  2. 现有Markdown文档的假阳性率可以忽略不计(即,现有对$`语法的使用非常少或不存在)。

选项

  • no_inline_svg:将行内<svg>替换为<img data:image/svg+xml;base64..">标签。
  • insert_fonts_css:插入字体加载样式表(默认:True)。

开发/测试

$ git clone https://gitlab.com/mbarkhau/markdown-katex
$ cd markdown-katex
$ make conda
$ make lint mypy test

MkDocs集成

在您的mkdocs.yml中,将以下内容添加到markdown_extensions。

# mkdocs.yml
markdown_extensions:
  - markdown_katex:
      no_inline_svg: True
      insert_fonts_css: True
      macro-file: macros.tex

宏文件可能看起来像这样

% macros.tex
\mymacro:\text{prefix #1 suffix}

WeasyPrint集成

当您生成由WeasyPrint消费的HTML时,您需要使用no_inline_svg=True选项。这是由于WeasyPrint的一个长期限制。如果没有此选项,某些KaTeX公式将无法正确渲染,例如\sqrt

md_ctx = markdown.Markdown(
    extensions=[
        'markdown.extensions.toc',
        'markdown.extensions.extra',
        'markdown.extensions.abbr',
        ...
        'markdown_katex',
    ],
    extension_configs={
        'markdown_katex': {
            'no_inline_svg': True,      # fix for WeasyPrint
            'insert_fonts_css': True,
        },
    }
)
raw_html_text = md_ctx.convert(md_text)

您还可以使用markdown-katex将单个公式从tex转换为html

from markdown_katex.extension import tex2html

tex_text = r"""
\frac{1}{\left(\sqrt{\phi\sqrt{5}}-\phi\right)e^{\frac{2}{5}\pi}}=
 1+\frac{e^{-2\pi}} {
   1+\frac{e^{-4\pi}} {
     1+\frac{e^{-6\pi}} {
       1+\frac{e^{-8\pi}} {
         1+\cdots
       }
     }
   }
}
"""
options = {'no_inline_svg': True, 'insert_fonts_css': False}
html = tex2html(tex_text, options)

https://gitlab.com/mbarkhau/markdown-katex的更改日志

贡献者

感谢您测试、报告问题和贡献补丁

  • @summersz - Richard Summers
  • @bluhme3 - Evan Bluhm
  • @pawamoy - Timothée Mazzucotelli
  • @briankchan
  • @spoorendonk
  • @lisongmin
  • @alexatadi
  • @sacredfox - Akihiro Nomura
  • @jnsdrtlf
  • @dodoni - Markus Wendt
  • @tovrstra - Toon Verstraelen

v202406.1035

  • 修复#17罕见的并发问题。

v202112.1034

  • 更新KaTeX二进制文件到v0.15.1
  • 修复#13:使用行内语法对单个方程进行操作时不删除<p></p>

v202106.1033

  • 更新KaTeX二进制文件到v0.13.18

v202106.1032

  • 修复#8:告示中的数学
  • 更新KaTeX二进制文件到v0.13.11

v202105.1031

  • 更新KaTeX二进制文件到v0.13.6

v202104.1030

  • 更新KaTeX二进制文件到v0.13.3
  • 修复#4:关闭Popen的文件描述符
  • 添加对具有额外反引号的块的支持

v202103.1029

感谢@summersz报告此问题。

v202103.1028

  • 在Windows上使用node12作为KaTeX二进制文件

v202103.1027

  • 更新 KaTeX 二进制文件到 v0.13.0

v202008.1026

  • 修复 #12:处理带空格路径的 bug。(感谢 @summersz!)

v202008.1025

  • 修复 #9:更新 katex.css
  • 修复 #8:Windows 上的二进制文件查找
  • 更新与 WeasyPrint 一起使用时的文档

v202008.1024

  • 更新 KaTeX 二进制文件到 v0.12.0
  • 修复 #8:更新二进制文件...
  • 修复 #7:通过 npx 查找二进制文件

v202006.1021

  • 修复 #7:Windows 上的文件编码问题。

v202006.1020

  • 修复 #7 Windows 上的 katex-cli(现在使用 pkg --target node12...)
  • 修复 Windows 上的本地 katex.ps1katex.cmdkatex.exe 的搜索

v202005.0017

  • 允许使用 macro-file 选项。
  • 更新 katex-cli 到 版本 v0.11.1

v202005.0016-beta

  • 修复 #6:在 v202004.0015-beta 中引入的代码块解析回归。

v202004.0015-beta

  • 修复 #3:修复块内内联数学

v202004.0014-beta

  • 修复 #4:链接标签未正确关闭

v202001.0013-beta

  • 修复:忽略关闭栅栏后的尾随空格。

v202001.0012-beta

  • 修复:移除多余的空格以更好地与 whitespace: pre 一起使用。

v201912.0011-beta

  • 添加 insert_fonts_css 选项。
  • 记录选项

v201910.0010-beta

  • 向 README.md 添加更突出的示例。
  • 修复 #2:使用 MkDocs 时出现虚假日志消息

v201908.0009-beta

  • 修复 #1:当文档中包含多个公式时,渲染的公式不正确。

v201907.0008-beta

  • 修复:py<35 时不需要输入包

v201905.0007-beta

  • 修复:使用多个反引号时内联代码的解析

v201905.0004-beta

  • 修复:更好的错误报告
  • 修复:清理临时目录

v201905.0002-alpha

  • 初始版本

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

markdown-katex-202406.1035.tar.gz (39.6 MB 查看哈希值)

上传时间 源代码

构建分发

markdown_katex-202406.1035-py2.py3-none-any.whl (39.8 MB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持