python 输出 latex 工具

参考:

工具列表:

  1. sympy

    • 可以解析 latex 成为 sympy 函数,注意:有可能解析错误
  2. SageMath

    • 这是一个工具集,底层有调用到 sympy 等
  3. latexifier

表达式级别转换 —- latex Vs unicode 转换工具

  1. pylatexenc

  2. nougat-ocr 提供的模块 latex_conversion.py

(OCR) 图片转 Latex

  1. nougat

  2. LatexOCR pix2tex

  3. Nougat-Latex-Base

pylatexenc

latex str AST 解析

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from pylatexenc import latexwalker

In [104]: latexwalker.LatexWalker(r'\alpha \times \uppermu m').get_latex_nodes()

Out[104]:
([LatexMacroNode(parsing_state=<parsing state 140228470032720>, pos=0, len=7, macroname='alpha', nodeargd=ParsedMacroArgs(argspec='', argnlist=[]), macro_post_space=' '),
  LatexMacroNode(parsing_state=<parsing state 140228470032720>, pos=7, len=7, macroname='times', nodeargd=ParsedMacroArgs(argspec='', argnlist=[]), macro_post_space=' '),
  LatexMacroNode(parsing_state=<parsing state 140228470032720>, pos=14, len=9, macroname='uppermu', nodeargd=ParsedMacroArgs(argspec='', argnlist=[]), macro_post_space=' '),
  LatexCharsNode(parsing_state=<parsing state 140228470032720>, pos=23, len=1, chars='m')],
 0,
 24)

latex 符号数据库

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
from pylatexenc.latex2text import LatexNodes2Text

pprint.pp(LatexNodes2Text().latex_context.d)
pprint.pp(LatexNodes2Text().latex_context.d.keys())

# 或者

In [119]: from pylatexenc.latex2text import get_default_latex_context_db

In [120]: db = get_default_latex_context_db()

db.d # --> 这是一个dict[category-name, [type-name, symbol-or-macro-name]]

latex 转文本 text (unicode)

1
2
3
from pylatexenc.latex2text import LatexNodes2Text

text = LatexNodes2Text().latex_to_text("latex code string cmHz{-1/2}W^-1")