Начало | Python-форум | Python и Vim | Буква Ё | Формат RTF |
Ёлки-Палки, Карамзин
Букву «ё» и то придумал!
Сколько тёплой жизни вдунул
В наш язык сей гражданин.
Чтоб в естественной красе
Наслаждаться словесами,
Чтоб могли понять мы с вами
То ли — всё, а то ли — все...
А столичная печать
Александр Бобров
При ускоренном наборе,
При коммерческом напоре
«Ё» — не хочет замечать.
Автор: Евгений Миньковский, 3 декабря 2003 г. Исправлено: 7 апреля 2007 г.
Ë Введение
Ниже рассказано о том, как вы можете автоматически расставить букву Ё в своих документах. Сперва я скажу несколько слов о базе слов с буквой Ё, затем о нескольких програмных продуктах использующих её.
База слов с буквой Ё
Любая программа занимающаяся расстановкой буквы Ё должна опираться на мощную словарную базу. Можно написать плохую программу с хорошей базой и хорошую программу с плохой базой. При этом у первого варианта будут все шансы на успех, а у второго ни одного... Мы располагаем словарной базой объёмом около 60 тысяч слов. Это бесплатный продукт. Вы можете копировать, использовать, распространять, видоизменять, встраивать полностью или частично нашу базу в свои програмные продукты. В последнем случае желательно (но не обязательно) сохранять при этом ссылку на авторов и/или их сайт.
База была создана благодаря усилиям многих энтузиастов: Владимир Гурвиц, Елена Осьмова, Алексей Максимов, Роман Кузнец, Михаил Панов, Максим Каленков, Евгений Миньковкий, Валерий Худяков.
Работа с Ё-базой
Если вы хотите добавить или откорректировать слово в базе вам следует проделать следующие действия:
- Открыть текстовый файл yo.txt и отредактировать его соблюдая нехитрые правила:
- каждое слово с новой строки
- слова в которых есть сомнение, должны ли они писаться с ё или е (все-всё, чем-чём) должны предваряться двумя символами: * и пробелом
- кодировка может быть любой, но о ней следует уведомить те скрипты, которые работают с текстовой базой: yo.el или yo.py (см. ниже). По умолчанию, в силу исторических причин нами выбрана кодировка cp866 ("альтернативная").
- Это всё. Ни одна из имеющихся здесь программ не нуждается в какой либо сортировке базы. Однако сортировка может быть произведена средствами скрипта yo.py (см. ниже).
Скачать
yobase.zip yobase.gz
yo.py для Vim и Python
Слова
Этот скрипт предназначен для полуавтоматической расстановки в русском тексте буквы Ё в текстовом редакторе Vim. Основной рабочий инструмент это описанный здесь text.py. Слова в которых буква Ё обязана быть, заменяются автоматически, остальные интерактивно.
Скрипт кроссплатформенный настолько насколько кроссплатформены Vim и Python. По крайней мере под Windows 2k и под Linux Red Hat 8.0 он тестировался.
Установка
- Предполагается что text.py уже стоит на вашей машине.
- Теперь откройте текстовым редактором скрипт yo.py и в первой строчке скрипта исправьте путь:
yo_path = r"...\Vim\python\yo.txt" # FIXME here
- Если по каким-то причинам вам пришло в голову изменить кодировку файла yo.txt, сделайте это и укажите новую кодировку здесь же, в первой строке скрипта:
base_encoding = "cp866"
Допустимые значения: cp866, cp1251, koi8-r, maccyrillic, utf-8 и другие известные python'у.Использование
Откройте ё-фицируемый файл в vim и выполните команду
:pyf yo.py
При необходимости укажите в этой команде полный путь к скрипту, можно сделать shortcut к этой команде.При первом запуске скрипт генерирует вспомогательный файл yo.dat при втором запуске эта процедура не осуществляется, что существенно экономит время.
Если вы отредактировали файл yo.txt (как сказано выше) скрипт автоматически изменит содержимое базы yo.dat
Если вы потеряли файл yo.txt он будет восстановлен из yo.dat. При этом будет осуществлена сортировка по алфавиту. Она осуществляется с учётом того, что «Ё» — седьмая буква алфавита. Это не самый быстрый процесс.
Говоря проще, редактируйте yo.txt, как сказано выше, остальное скрипт попытается сделать автоматически. Считается что ёфикацией занимаются люди знающие русский язык на машинах способных отображать кириллицу. Эта революционная идея пришла ко мне в голову не сразу, однако с тех пор как пришла, диагностические сообщения я постарался перевести на русский язык.
Скачать
yo.py
yo.el для XEmacs
Слова
Это скрипт написанный мною на ELisp — макроязыке редактора XEmacs. (Не путать с GNU Emacs, в последнем данная программа работать не будет.) Работает на основе той же базы, что и предыдущий по аналогичному алгоритму.Установка
- Скачайте и распакуйте yobase.zip(gz) с базой данных (см. выше). Скачайте скрипт yo.el.
- В начале скрипта найдите строки:
(defvar yo-database-file "~\\my-packages\\yo.txt" "Place of yo database") (defvar yo-database-codingsystem 'alternativnyj "Coding system of `yo-database-file'") (defvar yo-cutting-strings (list "\\-" "\"=" "\"~") "Words in the text may be splitting by some strings: for example: hy\\-phe\\-na\\-ti\\-on in TeX")и исправьте их по вкусу. (Соответственно надо указать правильный путь, кодировку базы и элементы, которые могут разбивать слова в вашем тексте.)- В XEmacs выполните команду
M-X byte-compile-file <RET> yo.el
Использование
- В XEmacs выполните команду
M-x load-file <RET> yo.elc
Примечание: Не ставьте эту команду в инициализационный файл .emacs, так как инициализация скрипта выполняется долго, (зато работает он быстро).- Откройте ё-фицируемый файл и выполните команду
M-x run-yo-spell
Скачать
Microsoft Word
Microsoft Word является платной программой с закрытым форматом данных. Поддержку проверки грамотности русского текста в этой программе осуществляют различные компании (в том числе Microsoft) на коммерческой (платной) основе. Полагаю, что именно они должны предоставить пользователям возможность заплатив деньги навести в своих файлах порядок с буквой Ё. Раз у пользователя хватило денег на поддержку американского програмного продукта компании Microsoft, я не вижу почему бы им не продолжить платить деньги дальше. Тем не менее, я, в качестве полумеры, могу бесплатно, на основании лицензии GPL (см. ниже раздел "гарантии"), предложить препроцессор для документов RTF, который позволит вам обрабатывать документы в этом формате утилитами расчитанными на работу с plain-text'ом. (В том числе yo.el в Xemacs и yo.py в vim.)
TODO
- Поддержка скриптом yo.el редактора GNU Emacs
- Ввести в базу специальный префикс для слов, которые могут быть аббревиатурами и потому не должны ёфицироваться, если за ними идёт точка. вьет., имен., краев., мед., стер.: (см. ГОСТ 7.12-93).
- Поддержка скриптом yo.py символосочетаний разрывающих слова (переносы в (La)TeX, например). В yo.el это реализовано.
- Написание модуля к скрипту yo.py позволяющего ему работать без участия внешнего текстового редактора.
Более масштабная поддержка редактора Word мне не кажется перспективной: либо Word должен стать бесплатной программой с открытым кодом, а это мне кажется утопией, либо я должен брать деньги за этот скрипт, что, как мне кажется, нерентабельно.
О своих пожеланиях вы можете сообщать мне по адресу emin<at>mccme«point»ru
Никаких гарантий
Предоставленные здесь продукты защищены лицензией GPL. Програмные продукты и словарные базы представленные здесь вы можете копировать, использовать, распространять, видоизменять, встраивать полностью или частично в свои програмные продукты. В последнем случае желательно (но не обязательно) сохранять при этом ссылку на авторов и/или их сайт.
Согласно лицензии GPL авторы не несут никакой ответственности за функционирование своей продукции. Больше того, применительно к проблеме ёфикации я смею утверждать, что никакой програмный продукт никогда не сможет без ошибок расставить букву Ё в тексте. Я имел возможность лишний раз убедиться в этом, посетив сайт Виктора Трофимовича Чумакова где с удивлением узнал, что слово ещё в некоторых случаях должно писаться как еще, однако произноситься как ещё. Впрочем, я не считаю, что господа Пчелов и Чумаков являются истинной в последней инстанции. Расстановка буквы Ё это сложное, ответственное дело, которое надо делать спокойно и рассудочно, без бешенного детсадовского энтузиазма. При всём моём уважении к седьмой букве алфавита, их там есть ещё 32. Я профессионально занимаюсь вёрсткой научной литературы, и как краевед скажу вам следующее: главное, чтобы в вашей продукции не было ошибок содержательных, если вам удалось хотя бы это, то вы издали книгу, каких мало! А если это вам не удалось, то буква Ё добавит вам не больше чем остальные буквы и знаки препинания.
Известные проблемы машинной ёфикации
Наша чудесная программа заменяет:
Тер Петросян на Тёр Петросян мед. училище на мёд. училище Другие ресурсы связанные с буквой Ё
- http://vgiv.narod.ru/yo.html Ёфикатор Владимира Иванова.
- Мы с Владимиром заключили что-то вроде неформального соглашения об обмене базами, и есть некоторая надежда, что со временем наши базы будут совпадать.
- http://www.unity-dana.ru/smh/YOKROS.ZIP
- Ёфикатор Леонида Беленького написанный для программы Microsoft Word. Мы с Леонидом, так же заключили аналогичный пакт об обмене базами, однако для полноценного включения нашей базы Леониду придётся изменить каким-то образом свой скрипт, в противном случае он может не справиться с объёмом базы.
- Сайт В.Т.Чумакова о букве Ё и её проблемах
Начало положено глубокой осенью 2003 года, 28 ноября... © Анабар | Vasily Ivanov | outerspace[at]anabar[dot]ru |