преобразование латекса в симпатию

#python #latex

#python #Латекс

Вопрос:

 from sympy.parsing.latex import parse_latex
expr = parse_latex(r"frac {1   sqrt {a}} {b}")
  

Я пытаюсь использовать приведенный выше код для преобразования выражения latex в формат выражения sympy. Выдает ошибку даже после установки antlr4. Я использую версию python3.

 ImportError: LaTeX parsing requires the antlr4 python package, provided by pip (antlr4-python2-runtime or antlr4-python3-runtime) or conda (antlr-python-runtime)
  

Как это решить? Есть ли какие-либо зависимости?

Ответ №1:

Основываясь на ImportError , я думаю, вам нужно будет установить antlr4

  • информация об установке conda здесь
  • информация об установке pip здесь

Если вы используете pip, рассмотрите это сообщение в блоге от разработчика ядра Python:https://snarky.ca/why-you-should-use-python-m-pip /

Ответ №2:

Вам не только нужно установить antlr4 , но вам нужна конкретная версия.

На момент написания этой статьи (02/2023) parse_latex функция sympy реализована таким образом:

 def parse_latex(sympy):
    antlr4 = import_module('antlr4')

    if None in [antlr4, MathErrorListener] or 
            version('antlr4-python3-runtime') != '4.10':
        raise ImportError("LaTeX parsing requires the antlr4 Python package,"
                          " provided by pip (antlr4-python3-runtime) or"
                          " conda (antlr-python-runtime), version 4.10")

    ...

  

Которое явно проверяет номер версии.
Итак, вам необходимо иметь версию 4.10, как также указано в сообщении об ошибке:

pip install antlr4-python3-runtime==4.10

(Смотрите также инструкции по установке во время выполнения)

Затем вы можете протестировать это следующим образом:

 >>> from sympy.parsing.latex import parse_latex
>>> parse_latex(r"frac {1   sqrt {a}} {b}")
(sqrt(a)   1)/b
  

Это может измениться в будущем, поскольку синтаксический анализ Latex является экспериментальным