Переносы по алгоритму TeX

Статус
Закрыто для дальнейших ответов.

Specialist

15 лет на форуме
Сообщения
2 035
Реакции
8
Ответ: Переносы по алгоритму TeX

Готов присоединиться к компании. :)
Знаю паскаль, умею работать с ИнДизайном из Дельфи через скриптовой интерфейс, что порой неплохо, т.к. можно использовать внешние DLL. Вдруг пригожусь? :)


Появилась такая идея...
А если взять и грубо в лоб написать простой скрипт? Берем батовский словарь (например) и начинаем расставлять переносы. Например так: взять первое слово каждой строки и по словарю расставить в нем дискретные переносы?

С принципе достаточно просто, надо только реализовать механизм быстрого поиска по словарю. Я примерно представляю как это делается и задача видится мне несложной. Как идея? Совсем бредовая?
 

@diz@

отечеств. про
15 лет на форуме
Сообщения
4 220
Реакции
1 914
Ответ: Переносы по алгоритму TeX

Specialist сказал(а):
А если взять и грубо в лоб написать простой скрипт? Берем батовский словарь (например) и начинаем расставлять переносы. Например так: взять первое слово каждой строки и по словарю расставить в нем дискретные переносы?
Мне кажется, что он будет весьма долго трудиться, если стоит paragraph composer.
Да и очень статичная получится работа. Любые дополнительные правки (которые так любят многие авторы) будут подразумевать последующий вызов скрипта. Возврат к кварку 3-5 как бы выходит. Или нет?

P.S. Если понадобится, смогу потестить предложенные алгоритмы.
 

Strizh

15 лет на форуме
Сообщения
982
Реакции
92
Ответ: Переносы по алгоритму TeX

Моя мысль:
Берем плагин hyphenator из примеров из СДК к ИнДизайну. Прикручиваем туда ЛЮБОЙ понравившийся алгоритм. Правим кучу багов (примеры не без багов) и наслаждаемся.
Минусы: нужно знание С++.
 

Specialist

15 лет на форуме
Сообщения
2 035
Реакции
8
Ответ: Переносы по алгоритму TeX

@diz@
Paragraph composer можно и выключить... дело в другом. Если мы слова в словаре не находим, то получается неприятная ситуевина...
Поэтому нужно включить родные ИнДизовские переносы и расставлять дискретные не в первом, а в последнем слове строки. В этом случае, даже если мы что-то поправили/добавили весь текст не останется без переносов. ИМХО так статичности меньше.
 

JAW

Топикстартер
15 лет на форуме
Сообщения
15 797
Реакции
3 454
Ответ: Переносы по алгоритму TeX

Ребята...
Во первых текущие вопросы:
1) Насчет скрипта, смысла нет.
2) Относительно алгоритма. Еще раз скажу, алгоритм бьется на две части, собственно алгоритм и патерны переносов (словарь).
3) Относительно словаря. Если есть словарь перносов, то по нему генерируется набор патернов. Собственно я все время и был занят тем, чтобы раскрутить patgen (генератор патернов по словарю).

Теперь... Удалось мне запустиь PatGen. Проблема оказалась в том, что он работает только с 26 символами и те модификации, которые были якобы оиентированны на многоязычность с кириллицей нефига не работают (решение - перекодировка словаря в транслит, генерация патернов в транслите и перекодировка обратно).

НО!!! Мне для тестирования и для отладки нужен исполняемый модуль, на вход которого подавался бы наборт патернов и текстовый файл, на выходе получался бы текстовый файл с расставленными перносами И

Вот с И сложнее...
Дело в том, что алгоритм генерирует в качестве промежуточного результата весовые коэффициенты точек переноса. Так вот, мне нужен выходной файл с этими весовыми коэффициентами после каждой буквы кроме случая, когда этот коэффициент равен 0.

Можете кто нибудь такое сделать?

Естественно, Win32. Лучше консоль, входной и выходный файл могут быть заданы через потоки.
 

Strizh

15 лет на форуме
Сообщения
982
Реакции
92
Ответ: Переносы по алгоритму TeX

Есть исходный код от PatGen?
Моя аська есть в профайле. Стукнись - обсудим.
 

JAW

Топикстартер
15 лет на форуме
Сообщения
15 797
Реакции
3 454
Ответ: Переносы по алгоритму TeX

Strizh
А вот с этим ну совершенно не просто.
Исходный код есть, но на WEB, т.е. нужны спец. средства, чтобы из него получить код и этот код будет нечитабелен.

Есть, в принципе, некое расширение PatGen с поддержкой Unicod (UTF8) и там есть компилируемый C код, но он не читабелен. Впрочем есть и PDF с документацией к коду.

Посмотри вот здесь:
www.fi.muni.cz/~xantos/patlib/

Тут и документация и все дела есть...
Что такое PatLib так и не разобрался, похоже какая-то надстройка для удобства работы с патернами, но opatgen там тоже есть и дока по нему.
 

JAW

Топикстартер
15 лет на форуме
Сообщения
15 797
Реакции
3 454
Ответ: Переносы по алгоритму TeX

Кстати...
Вот некоторая информация о русских наборах патернов и стоит проверить последний набор Лебедева.

semiconductors.phys.msu.su/~swan/hyphenation.html

Вообще наборы переносов можно взять тут:
ftp://ftp.ctan.org/pub/tex-archive/language/hyphenation

И русские тут:
ftp://ftp.ctan.org/pub/tex-archive/language/hyphenation/ruhyphen/
 

Strizh

15 лет на форуме
Сообщения
982
Реакции
92
Ответ: Переносы по алгоритму TeX

2 JAW
Давай в аську. А то я смотрю тут знающих и пишущих на Сях нет никого. А в форум смотреть времени не особо.
 

AirGraph

Участник
Сообщения
244
Реакции
21
Ответ: Переносы по алгоритму TeX

Исходный код от PatGen вовсе не решение вопроса. Я вот подумал, что почитаю ка я подробно то самое PhD на ангельском, сиречь исходную идею и надо делать алгортм по этой идее. Ведь никто не знает на сколько код PatGen отражает ту самую идею, правда? А русская макулатура есть по этой идее? Я постараюсь разобраться в исходных идеях и расписать алгоритм создания паттернов по словарю переносов и алгоритм использования этих самых патернов.

AirGraph.
 

JAW

Топикстартер
15 лет на форуме
Сообщения
15 797
Реакции
3 454
Ответ: Переносы по алгоритму TeX

Ну что...
С моими знаниями Сей попытался скомпилировать opatgen ;)
Получил мешок мата, причем мешок огроменный.

Напомню, эта штука написана на WEB, для того, чтобы получить код на C нужно пропустить его через спец. программу, которая генерирует "нечитаемый" код.
TeX я таки поставил, сподобился. Программа входила в комплект, но скомпилить не смог.

Воспользовался .exe-м с диска TeX Live... Ладно, материться буду завтра. Но я не врубаюсь в принципе. Что-то после часов 3-х мучений я получил... Но она под конец коворит "вах, структура слишком сложна" и вываливает.

Давайте дам прямые ссылки:
Тезисы по поводу PatLib:
http://www.fi.muni.cz/~xantos/patlib/thesis/thesis-p.pdf
Документация пользователя по PatLib и opatgen:
http://www.fi.muni.cz/~xantos/patlib/thesis/userguide-p.pdf
Документация по исходникам (из которой генериться и документация и код)
PatLib:
http://www.fi.muni.cz/~xantos/patlib/thesis/c-patlib-s.pdf
OpatGen:
http://www.fi.muni.cz/~xantos/patlib/thesis/c-opatgen-s.pdf

Исходные статьи Лянга, ссылки на оригинальный patgen и opatgen
www.tug.org/docs/liang/

P.S. Я могу сгенерировать PDF из исходников оригинального PatGen'а если нужно и выдрать соответствующие места из TeX programers guide.
(TeX тоже написан на WEB, но в качестве кода используется ISO паскаль в котором даже указателями не пахнет)
 

Strizh

15 лет на форуме
Сообщения
982
Реакции
92
Ответ: Переносы по алгоритму TeX

Все наигрались и ветка ушла в "глубину" форума?
 

JAW

Топикстартер
15 лет на форуме
Сообщения
15 797
Реакции
3 454
Ответ: Переносы по алгоритму TeX

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

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

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

Strizh

15 лет на форуме
Сообщения
982
Реакции
92
Ответ: Переносы по алгоритму TeX

Ты скажи чего требуется. Может я чего и напишу.
 

JAW

Топикстартер
15 лет на форуме
Сообщения
15 797
Реакции
3 454
Ответ: Переносы по алгоритму TeX

Требуется следующее:
1) Откомпилировать под винды opatgen (ссылка в 27 сообщении).
Это генератор патернов переносов по словарю поддерживающий UTF8/Unicode

2) Откомпилировать библиотеку из 8-го сообщения, конкретно Hyphen.c преобразовав ее в DLL и прикрутив к ней интерфейс, который читал бы библиотеку патернов, и выставлял бы точки переносов по текстовому файлу, в качестве дополнительной меры желательно получать в словах весовые коэффициенты (там каждой точке после буквы присваивается вес 0 (перенос запрещен), четный, или не четный, чем выше нечетное число, тем более нежелателен перенос, чем выше четное, тем он более желателен).

Ну, и соответственно, сделать API под системы, под которые известно как вставлять переносы, но это уже последний этап.
 

JAW

Топикстартер
15 лет на форуме
Сообщения
15 797
Реакции
3 454
Ответ: Переносы по алгоритму TeX

Да... В том архиве по сути два дубликата одной библиотеки, в маленьком архиве модуль именно только переносов на C для Питона, в большем - целая библиотека выключки слов, которая, насколько понимаю, встроена в OpenOffice в частности.

Так вот полноценной выключки не нужно, нужны ТОЛЬКО ПЕРЕНОСЫ
 

Strizh

15 лет на форуме
Сообщения
982
Реакции
92
Ответ: Переносы по алгоритму TeX

JAW сказал(а):
Требуется следующее:
1) Откомпилировать под винды opatgen (ссылка в 27 сообщении).
Это генератор патернов переносов по словарю поддерживающий UTF8/Unicode
Выдрать бы еще оттуда код Сишный.

JAW сказал(а):
2) Откомпилировать библиотеку из 8-го сообщения, конкретно Hyphen.c преобразовав ее в DLL и прикрутив к ней интерфейс, который читал бы библиотеку патернов, и выставлял бы точки переносов по текстовому файлу, в качестве дополнительной меры желательно получать в словах весовые коэффициенты (там каждой точке после буквы присваивается вес 0 (перенос запрещен), четный, или не четный, чем выше нечетное число, тем более нежелателен перенос, чем выше четное, тем он более желателен).
ну это я уже компилировал. Только там завязка на ASCII символы. Пришлось немного ковыркнуть, что бы хоть как-то откомпилилось.
 

Strizh

15 лет на форуме
Сообщения
982
Реакции
92
Ответ: Переносы по алгоритму TeX

Бобик сдох?
 

Specialist

15 лет на форуме
Сообщения
2 035
Реакции
8
Ответ: Переносы по алгоритму TeX

Убит Батовым, судя по всему...
 

JAW

Топикстартер
15 лет на форуме
Сообщения
15 797
Реакции
3 454
Ответ: Переносы по алгоритму TeX

Ну а что я? Я плагин по любому писать не буду...
Мне нужны сейчас по любоу исключительно инструментальные инструменты.
Я уже писал, что нужен "переносчик" ставящий весовые категории в точках переноса и генератор патернов.

На этом уровне я могу что-то делать, на уровне программ и алгоритмов извините, но разучился.
 
Статус
Закрыто для дальнейших ответов.