Добрый день!
Занимаюсь разработкой мультиплатформенной LGPL-библиотеки FI для набора различного вида формул и любых других иерархических структур. Одновременно с библиотекой также пишу на Qt редактор формул (наподобие MathType для MS Office, но с большим функционалом). Этот редактор планируется в дальнейшем встроить в OOo как средство для набора формул. Объем работ достаточно большой, а времени, как всегда мало , поэтому если кто заинтересовался и хочет поучаствовать в написании кода, тестировании, поиске ошибок, внедрении библиотеки в свои разработки (подробнее в документации), или просто предложить новые идеи, пишите на e-mail: libfi@mail.ru Все исходники и бинарные сборки под Linux x86 и x64 можно найти на svn: svn://ien.pp.ru/ars Кроме того, на сайте http://fi-library.h16.ru можно ознакомиться с актуальными в данный момент вопросами.
Основные преимущества библиотеки:
1. написана в виде библиотеки, что позволяет легко встраивать ее в любую программу, где требуется набор или отображение формул в реальном времени;
2. написана на ANSI C89;
3. может использоваться совместно с любой GUI-библиотекой, что позволяет использовать ее в приложениях на основе WinAPI, Qt, GTK, MFC, WxWidgets и т. п.;
4. библиотека легко встраивается в любое приложение, так как требует для этого написания небольшого количества GUI-зависимого кода;
5. библиотека легко расширяется новыми элементарными типами формул, кроме того, последние добавляются и удаляются динамически, что позволяет легко трансформировать, например, редактор математических формул в редактор структурных;
6. в библиотеке реализована возможность экспорта формул в произвольные иерархические текстовые языки представления формул (TeX, MathML, Maxima, Mathematica);
7. добавление нового иерархического текстового языка для экспорта производится с помощью простого описания его структуры в XML-файле экспорта;
8. библиотека рисует формулы высокого эстетического качества, что достигается использованием тех же принципов рисования, на которых основана издательская система TeX;
9. в библиотеке реализована возможность экспорта набранных формул в растровые и векторные графические форматы;
10. в библиотеке присутствует возможность задания цветов фона и символов, как при отображении на форме приложения, так и при экспорте в графические форматы;
11. библиотека поддерживает разные представления формулы во время набора и в окончательном (готовом виде); Необходимость двух различных представлений обусловлена тем, что во время редактирования удобно использовать дополнительные (наборные) интервалы между некоторыми частями формулы, например, для удобства установки курсора. В окончательном же виде эти интервалы не нужны и только портят визуальное представление.
12. библиотека сохраняет логическую структуру формулы, то есть логическое значение каждой элементарной формулы в дереве формулы;
13. библиотека поддерживает возможность экспорта логической структуры формулы в дерево для передачи приложению с целью последующей обработки;
14. все параметры элементарных типов формул (то есть расстояния между их элементами при рисовании) можно регулировать динамически;
15. библиотека позволяет динамически загружать и выгружать шрифты, что дает возможность использовать в формулах любые доступные символы;
16. библиотека содержит возможность динамической генерации пиктограмм, для того, чтобы в использующем ее приложении можно было легко организовать графическое меню доступных для набора элементарных формул;
17. библиотека позволяет сохранять дерево формулы в бинарный поток с внедрением используемых в нем шрифтов;
18. в библиотеке реализованы все возможные на дереве формулы варианты выделения, что позволяет производить редактирование не только целых поддеревьев, но и внутренних частей дерева.