Есть ли TeX API для С++?

Я хочу просмотреть формулы TeX в моем пользовательском интерфейсе. После долгого поиска, мне кажется, что нет другой возможности, кроме

  • напишите формулу в файл .tex
  • вызов tex с системой() и запись файла dvi
  • вызов, например. dvipng с системой() и написать файл png
  • загрузите этот файл в графический интерфейс
  • очистить (стереть все эти файлы).

Я думаю, что выполнение этого способа это не проблема, так как есть только формулы для рендеринга, а не целые документы. Но автоматическая настройка среды для системы TeX представляется более серьезной проблемой. Итак, есть ли возможность включить TeX в качестве API в мою программу? Большое спасибо!

Ответы

Ответ 1

Не могли бы вы инкапсулировать эти шаги в одной оболочке script (т.е. которая принимает формулу и имя файла png в качестве аргументов)? script может также обрабатывать настройку среды для TeX. Ваша программа просто вызывает script при вызове system().

Ответ 2

Там C API для TeX называется MimeTeX, но получившееся изображение... не так красиво, как могло бы быть.

Если вы в порядке с Java, JLatexMath

И если вам нужна версия WPF, она находится в разработке WPFMath

Ответ 3

Я не уверен, но думаю, что компонент MathType будет излишне.

Также посмотрите sidehare и посмотрите флеш-видео, чтобы получить дополнительную информацию о sitmo, mathMagig, Edoboard и их инструментах API.

хорошие удачи.

Ответ 4

LyX - это процессор документов на базе TeX. Поскольку приложение является открытым исходным кодом, вы можете проверить код на С++, чтобы узнать, как они справляются с описанной вами проблемой.

Ответ 5

Для Edoboard и Tutorsbox.com мы делаем следующее:

Храните черный список команд LaTeX, чтобы избежать:

TEX_BLACKLIST = ["\\def", "\\let", "\\futurelet",
    "\\newcommand", "\\renewcommand", "\\else", "\\fi", "\\write",
    "\\input", "\\include", "\\chardef", "\\catcode", "\\makeatletter",
    "\\noexpand", "\\toksdef", "\\every", "\\errhelp", "\\errorstopmode",
    "\\scrollmode", "\\nonstopmode", "\\batchmode", "\\read", "\\csname",
    "\\newhelp", "\\relax", "\\afterground", "\\afterassignment",
    "\\expandafter", "\\noexpand", "\\special", "\\command", "\\loop",
    "\\repeat", "\\toks", "\\output", "\\line", "\\mathcode", "\\name",
    "\\item", "\\section", "\\mbox", "\\DeclareRobustCommand", "\\[", "\\]"];

Затем мы выполняем системный вызов "latex и textopng".

Это как API REST плюс некоторое кэширование, и вот вы идете:) В качестве обновления мы скоро преобразуем эти изображения LaTeX в SVG.