FreeBasic
Главная
Вход
Регистрация
Четверг, 21.06.2018, 04:01Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Оффтоп » Флудилка » алгоритм переносов
алгоритм переносов
electrikДата: Среда, 12.03.2014, 17:15 | Сообщение # 1
Майор
Группа: Друзья
Сообщений: 94
Репутация: 3
Статус: Offline
задумал я для наших ребят в издательстве текстовый редактор написать. все знают, что в наше время написать редактор особого ума не надо, а вот алгоритмы - ...
вобщем, нужна реализация алгоритма расстановки переносов. предположим, в книге длина строки равна 30 символов и должно это выглядеть так:

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

знаю, есть алгоритм ляна-кнутта, вродь так называется, может кто-то это уже прошёл, уж не охото возиться с этим. я попробую конечно, но если поможете, будет классно.
поповоду денег - думаю вряд ли мне за это заплатят, так как это моя инициатива.
нафиг мне это надо. слепые работают под dos в лексиконе, жесть, а виндовые редакторы, либо не подходят требованиям, а специализированные громоздкие и стоят таких же денег.
у нас требования просты, текст должен форматироваться по 30 символов в строке, текстовый редактор должен уметь расставлять
переносы автоматически, и должен уметь сказать правильно ли написано слово(spellchecker).
остальное, тут уже дело техники, макросы горячки поиск и т.д.
 
haavДата: Среда, 12.03.2014, 18:10 | Сообщение # 2
Генерал-полковник
Группа: Администраторы
Сообщений: 852
Репутация: 34
Статус: Offline
Серега! Вот здесь реферат с исходником на паскале:

http://xreferat.ru/33....ii.html

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


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
electrikДата: Четверг, 13.03.2014, 19:00 | Сообщение # 3
Майор
Группа: Друзья
Сообщений: 94
Репутация: 3
Статус: Offline
спасибо - это я уже видел, взял тож на заметку, но думаю, что оно слабовато будет. вот что нашёл:
http://habrahabr.ru/post/138088/
алгоритм ляна-кнута, описание правил.

попробовал собрать на gcc - ух, библиотек таскать много надо! допилю - выложу. всё будет в виде dll. может потом, разобраться в c++ коде и на fb переписать. эт ладно, будет желание - займусь. главное есть алгоритм заголовки к fb и  правила к этой штуке. хотя уже в правилах баг есть, слово интуиция - переносит и как интуици-я.
 
haavДата: Четверг, 13.03.2014, 19:21 | Сообщение # 4
Генерал-полковник
Группа: Администраторы
Сообщений: 852
Репутация: 34
Статус: Offline
На хабре я видел, но че-то там мудрено больно. Хотя попробуешь и тот и другой алгоритм, потом не забудь отпишись. Меня больше интересует алгоритм из реферата, как он на деле.

Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
electrikДата: Пятница, 14.03.2014, 19:09 | Сообщение # 5
Майор
Группа: Друзья
Сообщений: 94
Репутация: 3
Статус: Offline
ух, вот оно - hyphenator:
ftp://el-zone.spb.ru/freebasic/libs/hyphenator.7z
это по алгоритму ляна-кнута.
недостатки - любит оставлять последние буквы, например, интуици-я, тре-ни-ро-воч-ны-й, пе-ре-но-си-мы-й.
видимо, правила фиговые, хотя это стандартные правила tex. обязательно надо проверять, не остались ли одиночные буквы с переносом. считается, не идеальный алгоритм, но универсальный для всех языков. в архиве правила только для русского языка - patterns.bi.
буду глядеть алгоритм из реферата. мож и вместе их скрестить, но эт ладно.

Добавлено (14.03.2014, 19:09)
---------------------------------------------
вот и ссылка на правила:
http://www.tug.org/tex-hyphen/#languages
потом переложу архив с новыми правилами, как выяснилось, у меня старые - около 5000 записей, новый - 7000 с лишним. и английские тож подсуну. а вообще, потом можно будет переработать программу, чтоб не в бинарнике держать правила, а в tex файлах как есть. ну это уже пожеланию. я  в редактор скрою, чтоб шаловливые ручки всё не попортили. глядел реферат, пока сильно не вник, идея ясна, всё-же пока на кнуте попробую. если уж совсем тяжко будет, займусь рефератом.


Сообщение отредактировал electrik - Пятница, 14.03.2014, 19:16
 
haavДата: Суббота, 15.03.2014, 08:29 | Сообщение # 6
Генерал-полковник
Группа: Администраторы
Сообщений: 852
Репутация: 34
Статус: Offline
Попробовал. Да действительно концы слов выходят с косяками. Использование из готового .bi файла неудобно. Конечно надо считывать из файла .tex Это избавит от необходимости дополнять BI файл , если обновится файл правил на оф. сайте.

Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
electrikДата: Вторник, 18.03.2014, 11:44 | Сообщение # 7
Майор
Группа: Друзья
Сообщений: 94
Репутация: 3
Статус: Offline
вот, переложил файл. реализовал простое чтение данных из tex файла.
обновил tex файл.
английский сами пристроите, там все легко.
мало что изменилось, всё-равно переносит последние гласные - тут можно самим навеску сделать. для тех кто не в курсе, и не ходил по приведённым выше ссылкам, про цитирую правила:
При переносе слов нельзя ни оставлять в конце строки, ни переносить на другую сторону часть слова, не составляющую слога; например, нельзя переносить: просмо-тр, ст-рах
Нельзя отделять согласную от следующей за ней гласной.
Нельзя отрывать буквы ъ и ь от предшествующей согласной.
Нельзя отрывать букву й от предшествующей гласной
Нельзя оставлять в конце строки или переносить на другую строку одну букву
При переносе слов с приставками нельзя разбивать односложную приставку, если за приставкой идёт согласный.
При переносе слов с приставками нельзя оставлять в конце строки при приставке начальную часть корня, не составляющую слога.
При переносе сложных слов нельзя оставлять в конце строки начальную часть второй основы, если эта часть не составляет слога
Нельзя оставлять в конце строки или переносить в начало следующей две одинаковые согласные, стоящие между гласными
Нельзя разбивать переносом односложную часть сложносокращённого слова предыдущие

пока ещё руки до реферата не дошли, как только что-то сделаю, суда солью.


Сообщение отредактировал electrik - Вторник, 18.03.2014, 11:50
 
haavДата: Четверг, 20.03.2014, 12:57 | Сообщение # 8
Генерал-полковник
Группа: Администраторы
Сообщений: 852
Репутация: 34
Статус: Offline
Ну как с рефератами сделаешь, потом перемещу тему в раздел freebasic. Все таки данная тема полезна и больше относится к FB , чем к оффтопу.

Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
Форум » Оффтоп » Флудилка » алгоритм переносов
  • Страница 1 из 1
  • 1
Поиск: