Рендеринг математических формул - PullRequest
4 голосов
/ 07 января 2011

Каков наилучший подход для реализации рендеринга математических формул в приложении Какао?

В MacOS X включено служебное приложение под названием Grapher , которое делает это именно так, как мне нужно (/Applications/Utilities/Grapher.app).

Ответы [ 2 ]

6 голосов
/ 08 января 2011

Если вам нужно только набрать уравнения, а не создавать интерактивный редактор уравнений, вы можете посмотреть, используя troff. Он имеет достаточно простой синтаксис для уравнений, выводит postscript и является частью OS X. Самый простой способ его использования также потребует ghostscript.

В качестве примера (на основе man-страницы):

Создать файл file fib.tr:

.EQ
x sub i = x sub {i-1} + x sub {i-2}
.EN

Преобразовать в постскриптум с eqn и groff:

$ eqn fib.tr | groff -P-b16 > fib.ps

Рассчитайте и извлеките ограничивающую рамку с помощью ghostscript:

$ gs -dNOPAUSE -sDEVICE=bbox -- fib.ps 2> fib.bbox

Добавьте информацию о ограничительной рамке в файл ps, чтобы создать файл eps:

$ cat fib.ps | sed -e '/%%Orientation/rfib.bbox' > fib.eps

Преобразование файла eps в pdf с использованием сценария perl, включенного в большинство дистрибутивов TeX (и доступен по адресу http://tug.org/epstopdf/)

$ epstopdf fib.eps

Теперь у вас есть изображение в формате pdf, которое содержит только обработанное уравнение с минимальным заполнением.

В качестве альтернативы, если у ваших пользователей установлен TeX (или вы хотите пройти через комплектацию минимальный дистрибутив TeX с вашим приложением), тогда LaTeXiT предоставляет услугу для набора текста уравнения и вернуть их в виде PDF-изображений. Вы можете позвонить, используя NSPerformService.

4 голосов
/ 08 января 2011

Как я описал в моем ответе на этот похожий вопрос , я построил систему для этого в моем приложении для iPhone (которое также работает на Mac, но я просто еще не завершил эту версию приложения.)

Я использовал слои Core Animation для представления иерархии уравнения с элементами, нарисованными кварцем для различных типов операций.Это позволяет мне анимировать набор текста относительно легким способом, что гладко даже на оборудовании iPhone первого поколения.

Как и при оценке произвольных уравнений, разбиение макета на иерархические слои делает вычисления макета довольно простыми.и гибкий.Тем не менее, мне потребовались месяцы, чтобы все сделать правильно.

Если вы хотите использовать существующее решение, вы можете обратиться к превосходному проекту Мэтта Галлахера с открытым исходным кодом Magic Number Machine , который хотя бы один разработчик использовал в качестве основы для коммерческого калькулятора Mac с набором формул.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...