Алгоритм расстановки переносов - Hyphenation algorithm
А алгоритм расстановки переносов - это набор правил, в частности, кодифицированный для реализации в компьютерной программе, который определяет, в каких точках слово может быть разбито на две строки с дефис. Например, алгоритм расстановки переносов может решить, что импичмент может быть сломан как импичмент или импичмент но нет препятствие.
Одна из причин сложности правил разбиения слов заключается в том, что разные «диалекты» английского языка имеют тенденцию различаться при расстановке переносов.[нужна цитата ]: Американский английский имеет тенденцию работать со звуком, но Британский английский имеет тенденцию смотреть на происхождение слова, а затем звучать. Также существует большое количество исключений, что еще больше усложняет дело.
Некоторые практические правила можно найти в книге майора Кири: «О расстановке переносов - анархия педантизма».[1] Среди алгоритмический подходы к расстановке переносов, реализованные в Система набора TeX широко используется. Это подробно описано в первых двух томах Компьютеры и набор текста и в диссертации Франклина Марка Ляна.[2] Целью работы Ляна было сделать алгоритм настолько точным, насколько это возможно, и сделать любой словарь исключений небольшим.
В оригинальных шаблонах расстановки переносов для американского английского языка TeX список исключений содержит только 14 слов.[3]
В TeX
Порты алгоритма расстановки переносов TeX доступны в виде библиотек для нескольких языков программирования, включая Haskell, JavaScript, Perl, PostScript, Python, Рубин, C #, а в TeX можно настроить отображение дефисов в журнале с помощью команды showhyphens
.
В Латекс, пользователи могут добавить исправление переносов, используя:
hyphenation {слова}
В перенос
команда объявляет допустимые точки переноса, в которых слова представляют собой список слов, разделенных пробелами, в которых каждая точка переноса обозначена знаком -
характер. Например,
hyphenation {fortran er-go-no-mic}
заявляет, что в текущей работе «fortran» не следует переносить через дефис и что если «эргономичный» должен быть расставлен через дефис, он будет в одном из указанных пунктов.[4]
Однако есть несколько ограничений. Например, акции перенос
команда принимает только ASCII буквы по умолчанию, поэтому его нельзя использовать для исправления переносов слов с символами, отличными от ASCII (например, ä, é, ç), которые очень распространены почти на всех языках, кроме английского. Однако существуют простые обходные пути.[5][6]
использованная литература
- ^ Майор Кири. «О переносах - анархия педантизма». Обновление ПК. Австралия: Мельбурнская группа пользователей ПК. Архивировано из оригинал 10 марта 2005 г.. Получено 6 октября, 2005.
- ^ Лян, Франклин Марк (август 1983 г.), "Слово Hy-phen-a -tion от Com-pu-ter", Кандидатская диссертация, Стэндфордский Университет Департамент Информатика, STAN-CS-83-977
- ^ "Таблицы переносов Plain TeX". Получено 23 июня, 2009.
- ^ "перенос". Гипертекстовая справка с LaTeX. Йель.
- ^ «Слова с ударением не переносятся». TeX FAQ.
- ^ "Как расстановка переносов работает в TeX?". Tex FAQ.
- "Шаблоны переносов TeX". Группа пользователей TeX (TUG).
- «TeX-дефис». Комплексная сеть архивов Perl. Получено 18 октября, 2005.
- "текст-дефис". RubyForge. Архивировано из оригинал 12 апреля 2016 г.. Получено 18 октября, 2005.
- «Переносы Кнута-Ляна для языка PostScript». anastigmatix.net. Получено 6 октября, 2005.
- "TeXHyphenator-J: расстановка переносов TeX в Java". Получено 14 сентября, 2006.
- «Расстановка переносов в Python с использованием алгоритма Фрэнка Ляна». Получено 10 июля, 2007.
- «Hyphenator.js-Расстановка переносов в JavaScript с использованием алгоритма Фрэнка Ляна». Получено 28 июля, 2015.
- "Tex :: Hyphen - Perl-реализация правил расстановки переносов TeX82".
- "phpSyllable - PHP-реализация алгоритма Фрэнка Ляна". 2020-01-04.
- «Переносчик - JavaScript-реализация алгоритма Фрэнка Ляна». 2019-03-27.
- "NHyphenator - C # версия алгоритма расстановки переносов Кнута-Ляна". 2019-04-12.