Есть ли 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.