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

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

From Wikipedia, the free encyclopedia

The program texvc (TeX validator and converter) validates (AMS) LaTeX mathematical expressions and converts them to HTML, MathML, or PNG graphics.

Какое отношение это имеет к WYSIWYG?

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

Или это было предложение по добавлению возможностей?

ars_ibr
() автор топика

По описанию — глубоко продуманная вещь.

Приятно видеть, когда у человека всё в порядке с головой.

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

>> /me отказывается понимать, зачем нужен WYSIWYG для редактора формул?

В научной среде есть куча толковых людей, не знающих latex, и это в наших интересах — облегчить им труд донесения своих идей.

Искренне удачи начинаниям, по всем признакам выйдет хорошо.

mclaudt
()

Присоединиться пока не могу (мало опыта и свои проекты), но идея нужная. Успехов вам.

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

Если бы вы внимательно читали, то увидели бы возможность встраивания в произвольное приложение, что может служить почином для реализации, например, систем тестирования для школьников и студентов физ-мат дисциплин с возможностью нормального набора формул. Кроме того, существует возможность набора ЛЮБЫХ иерархических структур, а не только формул, что позволяет, например, отображать деревья разбора или генеалогические деревья и набирать их. В общем можно придумать множество возможностей использования...

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

>В научной среде есть куча толковых людей, не знающих latex, и это в наших интересах — облегчить им труд донесения своих идей.

Ну... тут же не требуется знать латех в полном объёме.

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

Так я же не предлагаю заменить TeX и LaTeX :) Наоборот, я ими активно пользуюсь. Умение хорошо пользоваться LaTeX'ом — это ценное умение, но его изучение требует достаточных усилий. А потом, есть множество других применений для людей, которые не знают TeX

ars_ibr
() автор топика

Вопрос: почему не на гуглокоде, sourceforge и т.п? Какие-то принципиальные соображения?

По теме: здорово, надо будет глянуть.

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

А с прикручиванием нет никаких проблем, надо только саму программку на Qt допилить. Прикручивание легко делается с помощью сокетов.

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

:) Никаких принципиальных соображений против гуглокода, sourceforg'а нет, просто сейчас нет времени читать, да и лень читать мануалы. Кроме того, пока я все это один разрабатывал мне кроме svn никаких особых возможностей не надо было :)

ars_ibr
() автор топика

:) Ну что, кто-нибудь ознакомился с библиотекой хотя бы в общих чертах? Есть желание присоединиться к разработке?

ars_ibr
() автор топика

WYSIWYG — самый неподходящий интерфейс для работы с формулами.

Не вижу никаких реальных перспектив применения такого проекта.

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

не знаю точно ли это WYSIWYG, но я за процесс набор формул с наблюдением разного размером шрифта и положением символов

в LyX это сделано уже наполовину хорошо, т.е. использовать хочется, но иногда материшься от его понимания навигации по формуле

ну и вообще мне это интересно с той точки зрения, что исходник языка программирования (особенно такого с отступами, как питон) ТОЖЕ можно рассматривать как состоящий из формул (аналогичной корню, сумме, ...)

только вот все мне это интересно поковырять и возможно даже и добавить такую формулу будет не сейчас, а через некоторое время

во всяком случае советую выложить на сайте ссылочки на доки (например, на Doc.pdf) напрямую

пообщаться на тему «что оно должно уметь» — очень за, только сначала прочту все доки что у тебя найду

www_linux_org_ru ★★★★★
()

и по сравнению с LyX-ом ООо-вский способ набора формул — полный отстой. Юзаю только LyX. Хотя он не 100% WYSIWYG-ный.

www_linux_org_ru ★★★★★
()

а где у тебя сборка euler для линукс? я пока вижу только линукс-64

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

На svn есть один единственный, pdf документ страниц на 100, описывающий принципы работы с библиотекой и его внутреннее устройство. Полное описание функций есть в хедерах, в принципе их можно оттуда выцепить легко и сделать полную документацию функций...

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

Я много чего смотрел по этой теме, от оригинальных книжек Кнута по TeX и METAFONT до редактора формул из MS Office 2007. Мне кажется, что из WYSIWYG редакторов самый продуманный в плане набора MathType. Он выпускается для Windows и Mac Os X. Но он не расширяемый, только для математических формул, с ужасными шрифтами и кучей других проблем. Так что мне кажется, что вопрос с таким редактором до сих пор нормально не решен был. Про средство набора OOo я вообще молчу... Может быть я и не пересобрал euler для линукс x86, просто у меня у самого x64 версия, но это легко сделать самому, там есть qt pro файл, так что достаточно qmake запустить, ну или можно через ide. Я пишу в CodeLite и файл workspace для него там тоже есть...

ars_ibr
() автор топика

Ну так что, собратья по оружию, никто не загорелся желанием попрограммировать на Qt редактор своей мечты? Самое интересное мое наблюдение: из тех, кто хочет помочь написать такой редактор, никто не знает С/C++ и Qt — это обычно простые пользователи, а программисты как-то больше отмалчиваются по поводу помощь, просто комментируя: великолепно; ужас, смотреть противно или что-то подобное... К чему бы это?

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

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

Добрый день!

...


(15.02.2010 14:24:41)



а программисты как-то больше отмалчиваются

(17.02.2010 1:34:32)



Ты создал тему день - два назад, а уже хочешь какой-то массовой реакции от тех трёх с половиной программистов, что заглянули за день на лор?

1. Имей терпение.
2. Если думаешь, что тысячи программистов кинуться помогать тебе делать программу, то сильно ошибаешься.

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

> из тех, кто хочет помочь написать такой редактор, никто не знает С/C++ и Qt — это обычно простые пользователи, а программисты как-то больше отмалчиваются по поводу помощь, просто комментируя: великолепно; ужас, смотреть противно или что-то подобное... К чему бы это?

я вот программист. про чувство очень сильного удивления (ООП на Си) я политкорректно промолчал, так как возможно поковыряю это. (если кому-то нужны байдинги или вызов из С — имхо лучше нагенерить этих функций скриптом, а писать на с++)

а ламерОк правильно пишет — имей терпение. сделай сайт проекту (повторю — дай прямую ссылку на Doc.pdf).

www_linux_org_ru ★★★★★
()

Я бы, честно, покодил, но есть несколько «но»:

1. По работе мне приходится много работать с формулами. И я пришел к выводу, что лучше латехового метода, по крайней мере, для меня нет. Почему? А потому, что формулы можно обрабатывать, скажем, регулярными выражениями, что позволяет менять представления «на ходу». Не знаю как в MathType, но в MSEquation это невозможно. Поэтому идеологически работу я поддержать не могу.

2. К сожалению, свободного времени немного и оно довольно плотно занято другими вещами. Но если Вы организуете свой сайт и будете выкладывать актуальную информацию, возможно, я и смогу присоединиться в отдаленной перспективе.

annoynimous ★★★★★
()

Не смотря на то что мне нужен удобный редактор и визуализатор кода на Coq, я за это дело братся не хочу. Язык реализации сильно смущает.

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

> В научной среде есть куча толковых людей, не знающих latex, и это в наших интересах — облегчить им труд донесения своих идей.

Т.е. дать им ссылку на доки по латеху и по вводу формул? Я - за! =)

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

> Ну так что, собратья по оружию, никто не загорелся желанием попрограммировать на Qt редактор своей мечты?

У меня есть vim, иногда удалённо ed, иногда emacs. Накой черт мне помогать тебе делать очередной велосипед? Лучше поспособствуй освоению vim/emacs.

из тех, кто хочет помочь написать такой редактор, никто не знает С/C++ и Qt — это обычно простые пользователи, а программисты как-то больше отмалчиваются по поводу помощь, просто комментируя: великолепно; ужас, смотреть противно или что-то подобное... К чему бы это?

1) многие программисты, в отличие от простых пользователей, интесивно пользуются нормальный редакторами (ага, угадал, vim / emacs).

2) программисты ленивые, и им не интересно тратить время на велосипеды. Тем более, что есть очень хорошие решения. (TeX/LaTeX)

3) люди, работающие с «матаном» знают о TeX/LaTeX и о Metapost'e. Тех, кто не знает - единицы.

4) ну и программисты «not your personal army». Есть огромное множество проектов, которые менее велосипедны и куда интереснее :)

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

Такую обработку (по регулярным выражениям) я планирую встроить. Как это сделать уже придумано, осталось только написать код.

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

Про тысячи программистов — это конечно громко сказано :) И ничего такого я естественно не предполагал, так как реально смотрю на вещи :)

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

Мне кажется, уже можно безбоязненно переходить на С99, если только не планируется поддержка OS/2, MacOS и т.п.

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

Переходить-то может и можно, только мне пока никакие новые возможности С99 особо не нужны, вполне хватает С89...

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

Я разбираюсь в С++ и Qt, да и редактор такой не помешал бы. Но для OpenOffice.org наверно лучше использовать его собственные виджеты, а не Qt

annulen ★★★★★
()

лично у меня был гораздо более скромный план - прикрутить к ОО Math либу для подстветки синтаксиса. Пока остановился на компиляции ОО из сорсов)

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

Ввод формул будет осуществляться в таком виде, как в MathType. И встраиваться он будет следующим образом: если нужна формула в документе, то вызываете редактор и Ooo с помощью кнопки на панеле, он открывает свое окно, в этом окне формула редактируется и после закрытия окна помещается в документ в виде картинки. Но картинка не простая, а в ней с помощью стеганографии добавлено бинарное представление формулы. То есть, если вы принесете эту формулу на другой компьютер, где не установлен этот редактор, то формулы в документе будут видны, но их нельзя будет редактировать.

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

Использование Qt позволяет решить несколько проблем: во-первых, написанный таким образом редактор можно подключить не только к Ooo, а к любому другому редактору, который может передавать информацию через pipe и сохранять внутри документов рисунки, во-вторых, приложение может использоваться отдельно от редакторов для набора различного рода иерархических структур и сохранения их в виде картинок (с возможностью последующего редактирования), ну и в-третьих, получается полная мультиплатформенность, о которой не надо заботиться дополнительно :) Мне кажется это достаточные причины, разве нет?

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

Это великолепно, что вы знаете C++ и Qt, а кроме того, считаете данный редактор необходимым. Предлагаю вам заняться доработкой редактора, тем более что там по большей части осталось только порисовать несколько окошек настройки, где-то стиль меню подправить, shortcut'ы динамические сделать, ну и все остальное что связано с GUI. Библиотека уже прикручена, так что с ней особо даже и разбираться не надо будет. А приделать уже готовый редактор к Ooo очень просто, для этого достаточно пары сценариев на бейсике: запускаем из Ooo редактор, когда его окно закрывается получаем по каналу картинку и вставляем ее в документ. Что может быть проще?

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

Поместить-то можно, только кто его обновлять будет... Я хотел бы найти заинтересованных людей, которые согласны заняться разработкой и уже в процессе общения объяснить им что нужно, координировать наши общие действия в реальном времени, в аське, например и тогда работа пойдет...

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

А так писать для человека, который даже исходники редактора не открывал — это очень проблематично, так как придется много нюансов описывать, да и бессмысленно...

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

>Ввод формул будет осуществляться в таком виде, как в MathType

основное преимущество OOo Math перед MathType - возможность непосредственного ввода кода формулы в окне редактирования - не слишком сложные формулы так вводить гораздо быстрее. Основные недостатки: 1)это не ТеХ, если бы был ТеХ, было бы полезнее для общего развития; 2)сложные формулы все-так бывает проще вводить через гуй, а в OOMath он довольно слабый. Да и изучить язык проще на готовых примерах, построив формулу с помощью гуя

с помощью стеганографии

lol, реалии OOo немного сложнее

бинарное представление формулы

фу, это же виндузятство

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

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

Смысл стеганографии в том, что я беру картинку, например в Jpeg и к ней в бинарном виде прикрепляю неотделимую бинарную часть... В обычной программе просмотра последняя не видна, но позволяет в моем редакторе извлекать из картинки представление формулы и редактировать ее... Чего не нравится-то?

виндузятство

:) Как мило, а вы jpeg тоже текстом кодировать любите: char* Jpeg_picture = {0x88, 0x12,...}

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

Qt в целом одобряю, просто, мощно, кросс-платформенно. Но в качестве встроенного в ООо - не лучший вариант

получается полная мультиплатформенность

в ООо Qt нигде не используется. Ни внутри, ни в отрисовке виджетов (там Gtk, и то опционально). Поэтому редактор и ООо портируются отдельно для каждой платформы, для каждой платформы придется отлавливать баги их взаимодействия (в худшем случае, конечно :). Наконец, ресурсов это будет есть весьма прилично (ООо + Qt в памяти, долгий запуск из-за чтения библиотек с диска, ну разве что в КДЕ оверхеда не будет)

наконец, на Qt уже есть KFormula из KOffice

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

в оо PNG-графика сохраняется в символьном массиве. SVG для изображения объектов не поддерживается, равно как и ODG

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