преобразование латексного кода в mathml или svg-код в python

Есть ли какой-нибудь код python, который позволяет взять латексный код (для уравнений) и разделить его на математический или svg-код? Простая функция, которая принимает в качестве аргумента строку (латексный код) и выводит строку (код svg или mathml), была бы идеальной.

PS. Я нашел этот http://svgkit.sourceforge.net/SVGLaTeX.html, но это веб-проект и не знаю, как его использовать.

EDIT: или на любом языке (не обязательно python) или, по крайней мере, exe-файл, который можно просто выполнить с помощью командной строки (без установки дополнительных файлов).

3 Solutions collect form web for “преобразование латексного кода в mathml или svg-код в python”

Вы можете сделать это, не устанавливая ничего:

import urllib import urllib2 def latex2svg(latexcode): """ Turn LaTeX string to an SVG formatted string using the online SVGKit found at: http://svgkit.sourceforge.net/tests/latex_tests.html """ txdata = urllib.urlencode({"latex": latexcode}) url = "http://svgkit.sourceforge.net/cgi-bin/latex2svg.py" req = urllib2.Request(url, txdata) return urllib2.urlopen(req).read() print latex2svg("2+2=4") print latex2svg("\\frac{1}{2\\pi}") 

Этот скрипт вызывает сервер SVGKit, о котором вы упоминаете, что делает работу по преобразованию LaTeX в SVG. Он возвращает текст SVG (попробуйте его).

Обратите внимание, что, как и любое решение, основанное на сторонних веб-приложениях,

  1. Это предполагает, что у вас есть надежное подключение к Интернету

  2. Его производительность зависит от скорости вашего соединения и сервера

  3. Это зависит от стороннего сайта, чтобы оставаться последовательным (если они снижают или формат значительно изменяется, это больше не будет работать без корректировки)

О SVGLaTeX:

Я бы сказал, что вы можете использовать его как скрипт python на вашем компьютере (не веб-сайт) [edit: не так, как есть], но он не соответствует вашему требованию «без установки дополнительных материалов», поскольку я думаю, что вам нужен латекс распределение.

О MathML против SVG:

Преобразование Latex в mathml (я могу найти только веб-решения) отличается от преобразования LateX в SVG в том смысле, что математика больше похожа на описание математического источника, такого как источник LateX, а SVG – это формат для хранения уравнений набора, например PDF.

Получение SVG из LateX – это гораздо более сложный процесс, чем преобразование LaTeX в MathML, первое (насколько мне известно), всегда в конечном счете использующее программу Knuts TeX. Поэтому, если вы не установите LateX [edit: или используйте его удаленно], вам придется преобразовать его в MathML. [Надеюсь, кто-то знает инструмент для этого. Я не знаком с JavaScript. Можно ли запустить консоль?].

Редактировать:

Python для создания SVG из LateX (по линии SVGLatex / eqtexsvg):

 from subprocess import call import sys, re if not len(sys.argv) == 2: print "usage: tex2svg input_file.tex" exit(1) tex_name = sys.argv[1] svg_name = tex_name[:-4] + ".svg" ps_name = tex_name[:-4] + ".ps" dvi_name = tex_name[:-4] + ".dvi" if call(["latex", tex_name]): exit(1) if call(["dvips", "-q", "-f", "-e", "0", "-E", "-D", "10000", "-x", "1000", "-o", ps_name, dvi_name]): exit(1) if call(["pstoedit", "-f", "plot-svg", "-dt", "-ssp", ps_name, svg_name]): exit(1) 

Мое решение – использовать latex для создания файла DVI, а затем использовать dvisvgm для преобразования dvi в svg:

  1. latex file.tex # производит file.dvi
  2. dvisvgm --no-fonts file.dvi file.svg # dvisvgm --no-fonts file.dvi file.svg -fonts: использовать только пути SVG

По моему опыту, окончательный svg отображается точно так, как вам хотелось (с InkScape или QSvgRenderer).

Шаблон LaTeX, который я использую, таков:

 \documentclass[paper=a5,fontsize=12pt]{scrbook} \usepackage[pdftex,active,tightpage]{preview} \usepackage{amsmath} \usepackage{amssymb} \usepackage{amsfonts} \usepackage{tikz} \begin{document} \begin{preview} \begin{tikzpicture}[inner sep=0pt, outer sep=0pt] \node at (0, 0) {texCode}; % <--Put your tex-code here \end{tikzpicture} \end{preview} \end{document} 
  • интерактивный _standalone_ вывод от matplotlib
  • Установка 'xml: space' для 'сохранения' Python lxml
  • Почему мой PNG, закодированный base64, не виден внутри моего svg?
  • Анализатор Python SVG
  • Преобразование SVG в PDF (svglib + reportlab недостаточно хорошо)
  • Данные веб-соскабливания с интерактивной диаграммы
  • Большой d3.js график, холст или рендеринг на стороне сервера?
  • Есть ли скриптовый редактор SVG?
  • Python - лучший язык программирования в мире.