Довго я розбирався з правилами переносів. Особливо якщо зважити на «ефект Матриці» ©, який був у цій справі вирішальним. Я давно подумав, що не варто винаходити велосипед, але довго відкладав дослідження того, як воно реалізовано в TeX. Насправді, проблема переносу є нетривіальною, про що свідчить дисертація. Але відповідні таблиці для української мови давно існують, отже, проблема в реалізації алгоритму на JavaScript. І я вже був почав думати, як його краще запрограмувати, коли з'явилася щаслива думка, що я, певно, не один про це подумав. І правда, виявилося, що є відкритий проєкт Hyphenator, який підтримує різні мови. Все, що потрібно, — це витягти таблиці для українських слів з TeX і перетворити на UTF-8.
Я, звичайно, не міг не прикрутити переноси до транслітератора і потестувати правила. Найкращими виявилися таблиці, що їх створив Андрій Швайка, але вони, на жаль, погано відділяли префікс від кореня. Тому довелося ще трошки помучити patgen. Коли я закінчу тестувати таблиці, відправлю їх розробникам, і вони будуть доступні на сторінці проєкту. А поки що, Hyphenator можна запускати звідси.
В принципі, приклад все пояснює, якщо зазирнути в HTML, але я розкажу окремо, як прикрутити переноси до блоґа на Blogger. Головною особливістю є те, що шаблон Blogger не дозволяє ставити атрибут lang у <html>, а без нього програмка просить користувача вказати мову руками при завантаженні сторінки, що не є круто. Розв'язується це вставлянням в розділ <head> шаблону
Заодно я написав типограф, який, окрім переносів, ще розставляє типографські знаки за стандартом. Ця штука, сподіваюся, згодиться тим, хто хоче, щоб їхні коментарі в блоґах радували око. Принаймні я віднедавна коментую з переносами.
Я, звичайно, не міг не прикрутити переноси до транслітератора і потестувати правила. Найкращими виявилися таблиці, що їх створив Андрій Швайка, але вони, на жаль, погано відділяли префікс від кореня. Тому довелося ще трошки помучити patgen. Коли я закінчу тестувати таблиці, відправлю їх розробникам, і вони будуть доступні на сторінці проєкту. А поки що, Hyphenator можна запускати звідси.
В принципі, приклад все пояснює, якщо зазирнути в HTML, але я розкажу окремо, як прикрутити переноси до блоґа на Blogger. Головною особливістю є те, що шаблон Blogger не дозволяє ставити атрибут lang у <html>, а без нього програмка просить користувача вказати мову руками при завантаженні сторінки, що не є круто. Розв'язується це вставлянням в розділ <head> шаблону
<meta content='uk' http-equiv='content-language'/>
Ми вказали основну мову, але це ще не все. Hyphenator переносить тільки ті розділи, які йому дозволено переносити. А саме: тільки те, що має клас hyphenate. Тому, якщо необхідно, щоб переносилися слова в дописах, необхідно додати цей клас у відповідний розділ шаблону, а також додати атрибут, що явно вказує мову. Для переносу дописів знаходимо postbody і виправляємо його так: <div class='hyphenate' lang='uk'><data:post.body/></div>
Те саме треба зробити з усіма елементами, в яких ви хочете, щоб слова переносилися. Тепер додаємо скриптик, який, власне, все й робить: <script src="http://tran.eu5.org/Hyphenator/Hyphenator.js" type="text/javascript"></script>
<script type="text/javascript"><!--
Hyphenator.config({displaytogglebox:false,minwordlength:4});
Hyphenator.run();
//-->
</script>
Змінну displaytogglebox можна поставити true, якщо ви хочете, щоб у правому верхньому кутку з'явилася кнопочка, яка дозволить користувачу відключати переноси.Заодно я написав типограф, який, окрім переносів, ще розставляє типографські знаки за стандартом. Ця штука, сподіваюся, згодиться тим, хто хоче, щоб їхні коментарі в блоґах радували око. Принаймні я віднедавна коментую з переносами.
Вчора Олексій Греков відправив свої таблиці в Hyphenator. Що ж, тим гірше для них. Мої набагато краще переносять...
ВідповістиВидалитиХто хоче, може взяти мої таблиці тут.
Дякую, дуже корисна річ, Зробив переноси у дописах на своєму блозі, на другому також встановлю.
ВідповістиВидалитиДобре було б як встроїти типограф у форму для надсилання дописів, наприклад як додаток до браузера, гадаю у принципі таке можливо.
Не зрозумів як підключити ваші таблиці переносів.
Якщо ви запускаєте Hyphenator з моєї сторінки, він уже з моїми таблицями. Якщо ви скачаєте його зі сторінки проєкту, то відповідний файл треба замінити на мій.
ВідповістиВидалитиЩо стосується додатку до браузера, то, думаю, за допомогою GreaseMonkey це неважко зробити, але я ним не користуюся, тому не беруся. ;)
Дякую, зрозуміло.
ВідповістиВидалитиGreaseMonkey досі не користувався, треба буде подивитися.
Тимчасово видалив скрипт переносів, бо перестав працювати віджет рейтингів. І з приховуванням тексту «під кат» (Читати далі...) проблема. Швидше за все пов’язане зі заміною класу post-body entry-content на post-body hyphenate.
ВідповістиВидалитиТак, з div я погарячкував. Краще додати клас hyphenate до P. Мабуть, справді кілька класів краще не робити, дякую. Додав ще галочку як прив'язувати.
ВідповістиВидалитиЩе одне важливе доповнення.
ВідповістиВидалити