LINUX.ORG.RU

Редактор различных типов формул


0

0

Добрый день!

Занимаюсь разработкой мультиплатформенной 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. в библиотеке реализованы все возможные на дереве формулы варианты выделения, что позволяет производить редактирование не только целых поддеревьев, но и внутренних частей дерева.

Ответ на: комментарий от ars_ibr

>пары сценариев на бейсике

на яве уж тогда

annulen ★★★★★
()
Ответ на: комментарий от ars_ibr

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

А в чем тогда смысл этой бибилотеки? ОО Math уже есть, вместе с парсером.

annulen ★★★★★
()

и главное: без интеграции с Math эта штука вообще никому не нужна, так как не сможет читать формулы, сделанные в мсофисе.

annulen ★★★★★
()

а если не нужна ни совместимости с вордом (по крайней мере, 99%), ни совместимости с MathType из офиса, ни возможность текстового ввода, то и KWord+KFormula сойдут. А я остаюсь на OO Math

annulen ★★★★★
()
Ответ на: комментарий от annulen

В символьном — не в текстовом... А под потоком я как раз и понимал массив в памяти..

ars_ibr
() автор топика
Ответ на: комментарий от annulen

Зачем чего-то портировать я совершенно не понимаю... связь с OOo идет только через сокеты или кроссплатформенные pipe А макросы (расширения) на бейсике и так кроссплатформенные...

ars_ibr
() автор топика
Ответ на: комментарий от annulen

Что мешает взять парсер Math и проделать приведенную выше оперцию?? Пока что я считаю, что нужно сделать автономное приложение, которое может взаимодействовать с чем угодно через сокеты

ars_ibr
() автор топика
Ответ на: комментарий от annulen

А нестандартные шрифты тоже в текст внедрять, а потом, \TeX — штука не стандартная :) В нем расширяемый синтаксис комманд (почитайте оригинального Кнута) поэтому какие именно команды надо использовать?

ars_ibr
() автор топика
Ответ на: комментарий от annulen

Еще как нужна! Между прочим посмотрите ссылочку :) http://qa.openoffice.org/issues/show_bug.cgi?id=34183

И кстати, вы в Math можете структурные химические формулы набирать, например? А я со своей библиотекой могу :)

ars_ibr
() автор топика
Ответ на: комментарий от ars_ibr

>структурные химические формулы набирать

сразу видно, что вы не химик. Я интегрировал в ОО редактор JChemPaint, специально для этого предназначенный. Уверяю, создать OLE очень не просто.

ссылочку читал, народ пишет, что нужен и текстовый, и гуевый ввод. Многие из моих знакомых жалуют ОО именно за возможность быстрого набора формул.

annulen ★★★★★
()
Ответ на: комментарий от ars_ibr

>А нестандартные шрифты тоже в текст внедрять?

Может глупости говорить не надо? Распечатать документ любой человек сможет, кому надо править - гораздо логичнее поставить шрифт

annulen ★★★★★
()
Ответ на: комментарий от ars_ibr

> взять парсер Math и проделать приведенную выше оперцию

у вас все настолько легко и просто, что кажется, что вы школьник

annulen ★★★★★
()

Перечитал документацию, написано довольно неплохо, по ней можно даже начать делать альтернативную реализацию. Например всю логику перенести в QScriptEngine и добавить интерфейс на основе JSON а отрисовку так и оставить.

SV0L0CH
()
Ответ на: комментарий от annulen

> то и KWord+KFormula сойдут

у них есть возможность набирать саму формулу, или тоже «набираем обычный текст, а формула время от времени рисуется в другом окне»?

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от SV0L0CH

>всю логику перенести в QScriptEngine и добавить интерфейс на основе JSON

та к и представился ООО на удаленном кластере, работающий через веб-интерфейс))

annulen ★★★★★
()
Ответ на: комментарий от annulen

>та к и представился ООО на удаленном кластере, работающий через веб-интерфейс))

А в чём проблема? Можно запустить утилиту soffice с указаным портом и через него командовать. Только я вменяемой доки на офсайте не нашёл, да и документооборотом давно перестал заниматся.

SV0L0CH
()
Ответ на: комментарий от SV0L0CH

Альтернативную реализацию чего? Редактора? И главное — зачем, если я и так готов принять любую помощь в его разработке? Не лучше ли 1 хорошую вещь сделать, чем плодить кучу?

ars_ibr
() автор топика
Ответ на: комментарий от annulen

А что, уже проблема парсер написать чтоли? Мне так кажется все алгоритмы известны, не хотите с нуля писать, так возьмите программы, которые генерируют парсеры по контекстно свободной грамматике... В общем, если вам это очень сложно делать и вы не знаете соответствующей математики, то это не повод рассуждать о моей квалификации...

ars_ibr
() автор топика
Ответ на: комментарий от annulen

Только про ActiveX, OLE и COM не надо... Я достаточно работал с этими технологиями чтобы понимать как оно работает... А потом, почитайте внимательно и покажите, где я упоминал OLE вообще??? Правильно, нигде! Вставка картинки в документ и без OLE хорошо работает :) Или что, обязательно ее связывать с редактором картинок?

ars_ibr
() автор топика
Ответ на: комментарий от annulen

Ну а многие мои знакомые, когда пишут статьи в авторитетные издания РАН, очень любят MathType и TeX и терпеть не могут редактор ООо... Мне кажется все это не аргумент, а просто перепалка, кто умнее...

ars_ibr
() автор топика
Ответ на: комментарий от ars_ibr

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

Поскольку часть приложения всёравно написана на Qt то проблем с QtScript не будет. В общем, всю логику программы делаем на JS а наружу выставляем только интерфейс к экземпляру QScriptEngine. Отрисовка идёт отдельно, так чтобы её можно было заменить на аналогичные реализации на GTK, SDL или на чёмто другом.

PS как компилировать не понял, бинарник не запускал

SV0L0CH
()
Ответ на: комментарий от ars_ibr

велосипед детектед. или разработчики ОО зря делают специальный API для OLE? чтобы оно потом и в док экспортировалось, и ворде читалось...

annulen ★★★★★
()
Ответ на: комментарий от ars_ibr

>Не лучше ли 1 хорошую вещь сделать, чем плодить кучу?

так уже и так есть куча. но пипл не хавает, так как открывать вордовские формулы может только Math

annulen ★★★★★
()
Ответ на: комментарий от ars_ibr

>Вставка картинки в документ и без OLE хорошо работает

что-то мне подсказывает, что без OLE оно будет работать криво (например, небудет обрабатывать изменение размера)

annulen ★★★★★
()
Ответ на: комментарий от annulen

OLE не достаточно для нормального экспорта в doc... Нужна полная реализация ActiveX... А у OOo она хромая... поэтому, например, диаграммы из Ooo в word не экспортируются нормально, можете сами попробовать... И велосипеда тут никакого нет... Я, и кстати не только я, по приведенной выше ссылке о БАГЕ!, что можно и нужно сделать лучше! Никто не предлагает все выбросить, хотя иногда невольно и об этом задумываешься, но предлагает взять преимущества из разных мест и объединить их! Что толку вести полемику: это хорошо, это плохо! Ну так давайте сделаем хорошо, чтобы был и адекватный WYSIWYG интерфейс и адекватное текстовое представление, причем так, чтобы они были взаимосвязаны! Я предлагаю унифицировать все, дабы не прикручивать для каждой ерунды свою заплатку! Это и работать будет быстрее, и памяти занимать меньше, и надеюсь, если учесть все адекватные просьбы и предложения удобно будет большинству...

ars_ibr
() автор топика
Ответ на: комментарий от annulen

Есть проблема с масштабированием векторных картинок, вставленных в документ? Мне кажется нет :)

ars_ibr
() автор топика
Ответ на: комментарий от annulen

И по поводу OLE:

Вот в Ooo есть своя технология объектов, во многом сходная с COM... В чем проблема ее использовать? Зачем нужно OLE?

ars_ibr
() автор топика
Ответ на: комментарий от ars_ibr

Ну а если нужно OLE, то зачем технология объектов Ooo? Это не велосипед? Зачем нужны две почти одинаковые вещи? Правильно, чтобы ни одна не работала в полную силу, захламляла память и жутко тормозила... Просто с линуксом в плане GUI творится что-то ужасное и непонятное! Изначально гениально продуманную систему, с очень хорошим консольным интерфейсом оснастили убогой!!! реализацией GUI... Можно на эту тему очень долго дискутировать, конечно, но не вижу смысла... По поводу редактора-то что? Есть желание его делать?

ars_ibr
() автор топика
Ответ на: комментарий от ars_ibr

В общем-то это была основная суть разработки под LGPL — дать сообществу возможность сделать хороший проект, в котором будут учтены разнообразные интересы. А в итоге получается, что проще основать компанию, набрать в нее 10 человек, довести проект за пол года и продавать за 90$ как российскую альтернативу MathType...

ars_ibr
() автор топика
Ответ на: комментарий от ars_ibr

>можно и нужно сделать лучше!

вот именно. Над OOo Math сейчас работают 3.5 человека. Вы же, вместо того, чтобы помочь им доработать гуи до вменяемого состояния, делаете свою модель, которая не предоставляет уже имеющуюся в Math возможность импорта/экспорта формул. И вместо OLE опенофиса предлагаете свой велосипед

Да, Math иногда отображает формулы неправильно, но сейчас разработчики переделали математический шрифт и внесли некоторые улучшения, 3.3 будет 100% совместим с Equation. Открытым остается вопрос о формулах из MathType 5, пока они отображаются с артефактами

annulen ★★★★★
()
Ответ на: комментарий от ars_ibr

>векторных картинок

вы плохо себе представляете ОО. пока в нем реально работать только с растровыми картинками, я гарантирую это

annulen ★★★★★
()
Ответ на: комментарий от ars_ibr

>Ну а если нужно OLE, то зачем технология объектов Ooo?

наверное, чтобы OLE работало. в линуксе же нет общесистемного оле-сервера, да он по большому счету и не нужен нигде, кроме офиса

оснастили убогой!!! реализацией GUI

во-первых, это отдельные проекты, во-вторых, есть выбор и возможность настроить на свой вкус

annulen ★★★★★
()
Ответ на: комментарий от ars_ibr

>В общем-то это была основная суть разработки под LGPL

Практика показывает, что искать разработчиков на ЛОРе - гиблое дело :) Создайте проект на SF (есть неиллюзорный шанс найти какого-нибудь хорошо соображающего китайца), пропиарьте в других местах рунета

annulen ★★★★★
()
Ответ на: комментарий от ars_ibr

>Есть желание его делать?

а в каком он сейчас состоянии? Если % готвности >75, то можно дорабатывать в процессе эксплуатации. Но я так и не понял, чем это лучше доработки Math (с точки зрения использования внутри ОО, конечно же, т.е. сферические формулы в вакууме с возможностью экспорта в математику мне как бы безразличны)

annulen ★★★★★
()
Ответ на: комментарий от ars_ibr

если все-таки решите делать OLE, обращайтесь (мой проект - oochemistry.sourceforge.net). У меня есть работающий код на Яве для вставки OLE-объекта, собираюсь его отрефакторить, чтобы легко было использовать для объектов любого типа

annulen ★★★★★
()
Ответ на: комментарий от ars_ibr

как альтернативный вариант предлагаю доработку Math с применением библиотеки. У меня есть контакт с разработчиками

annulen ★★★★★
()
Ответ на: комментарий от annulen

Хорошо, давайте сделаем с помощью OLE объект, который будет взаимодействовать с редактором, как это сделано в MahType. Согласны заняться этим?

ars_ibr
() автор топика
Ответ на: комментарий от annulen

А что значит дорабатывать Math c помощью библиотеки? У них же разные способы отображения и построения формул... Доработка явно не получится... Или придется выкинуть из Math тот отображатель что там есть, или нет смысла впихивать туда мою библиотеку... По сути придется почти весь Math тогда переписывать... Проще уж тогда с нуля написать, дабы не испытывать сложностей с разницей в архитектуре того, что надо выпихивать и того, что надо впихивать :)

ars_ibr
() автор топика
Ответ на: комментарий от ars_ibr

В ближайшее время я постараюсь встроить в библиотеку возможность импорта формул из MathType, чтобы можно было переводить doc формулы. Ну а в последствии и из Math. После реализации последнего сможете спокойно набирать формулы в формате Math. Думаю, что тогда у вас не возникнет контраргументов против моего редактора.

ars_ibr
() автор топика
Ответ на: комментарий от ars_ibr

>MathType

вот это интересно. но еще интереснее было бы, чтобы эти MathType'овские формулы человечески отображались в открываемых доках (пока даже на винде все корежится)

annulen ★★★★★
()
Ответ на: комментарий от ars_ibr

в данный момент нет, уж извините. Летом, возможно, смогу, но для этого мне нужно будет убедиться, что этот продукт полезен лично для меня. Все, что я могу сделать сейчас - показать вам работающий код (он не полностью написан мной, но я представляю себе, как оно работает). Я постараюсь его доработать, чтобы другим было легко его использовать (с помощью наследования от базового класса)

annulen ★★★★★
()
Ответ на: комментарий от ars_ibr

>тогда у вас не возникнет контраргументов против моего редактора

один останется: для кошерного рендеринга формул из мсофиса придется открыть Math, скопировать текст, закинуть его в вашу программу и занового вставить. Приятнее было бы видеть эту возможность интегрированной в ООо (хотя это, наверное, можно автоматизировать более хитрыми действиями с OOo API)

annulen ★★★★★
()
Ответ на: комментарий от annulen

Ну так в этом и смысл, переводи в мою библиотеку и вот тебе формулы как в TeX'е... А про корежится в винде я знаю и, более того, один раз даже очень долго мучался с тем, чтобы набрать формулу нормально, так и не получилось.. В общем ограничения MathType налицо

ars_ibr
() автор топика
Ответ на: комментарий от ars_ibr

я имел в виду «корежатся при отображении в ООо на винде»

annulen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.