[oodisc] Автоматический перенос слов.

Alexej Kryukov akrioukov на newmail.ru
Ср Мар 23 11:56:34 MSK 2005


On Tuesday 22 March 2005 21:22, Nikolay Karelin wrote:
> Hello Alexej,
>
> Пример можно?
>
> Вроде, по словам Кнута (The TeXbook), алгоритм переносов
> специально заточен, чтоб одну букву не отрывать

Не наговаривайте на Кнута. Жестко прошивать такое в алгоритм
было бы недопустимо, т. к. есть языки, в которых подобный перенос
вполне возможен, если, конечно, эта буква составляет отдельный 
слог. На самом деле в TeX этим делом управляют параметры \lefthyphenmin
и \righthyphenmin (в OOo, по-моему, они и впрямь не настраиваются),
но они не спасают от кривизны реализации таблицы переносов.

Представим, например, что в начале слова будет кавычка: вот и 
окажется, что там уже не один символ, а два. В стандартном
LaTeX это не страшно, поскольку кавычкам не присвоены коды, которые
позволяли бы их считать за нормальные символы, но Омега у меня
однажды сделала перенос <<И-исус>>. И ровно тот же эффект мы
получаем в OOo. Попробуйте, например:

Sub TestHyphen
 Dim aHyphLocale As new com.sun.star.lang.Locale
 Dim aProps As new com.sun.star.beans.PropertyValue
 Dim aArg (0)
 aArg (0) = aProps
 sWord = "<<Иисус>>"

 oHyphenator = CreateUnoService ("com.sun.star.linguistic2.Hyphenator")
 aHyphLocale.Language = "ru"
 aHyphLocale.Country = "RU"
	
 oHyphens = oHyphenator.createPossibleHyphens (sWord, aHyphLocale, _ 
  aArg ())
 MsgBox oHyphens.getPossibleHyphens
End Sub

Еще хороший пример (хотя и в другом роде) -- слово "Брэк" (так звали
персонажа в одном художественном произведении. Здесь и LaTeX срабатывает
ничуть не лучше: сравните, какой результат дает \showhyphens{Брэк}.
А еще говорят, что у кого-то когда-то компьютер сделал перенос в
слове God ;-)))

-- 
Regards,
Alexej Kryukov <akrioukov at newmail dot ru>

Moscow State University
Historical Faculty


Подробная информация о списке рассылки Oo-discuss