Тема: Как распознать автоматический перенос?
Как с помощью макроса определить, что в слово добавлен автоматический перенос?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как с помощью макроса определить, что в слово добавлен автоматический перенос?
Просто предполагаю. Если конец слова совпадает с концом строки, то слово не перенесено:
?selection.Bookmarks("\line").Range.End
?selection.Bookmarks("\line").Range.Words.Last.end
Если конец слова совпадает с концом строки, то слово не перенесено
То, что часть слова на одной строке, а часть на другой, еще не значит, что вставлен автоперенос
Например:
- авропереносы просто отключены
- слова, в которых автоперенос не ставится никогда (числа, смешанные слова, несловарные…)
Для ясности, определю задачу так: поиск и замена автопереносов знаком «мягкий перенос» Chr(31).
Отредактировано Вождь (19.03.2010 06:58:27)
не понимаю. Естественно, автопереносы должны быть включены, чтобы их искать.
- слова, в которых автоперенос не ставится никогда (числа, смешанные слова, несловарные…)
Так ведь и слово будет на одной строке.
Я пробовал, автоперенос на слове никак не отражается, а вот мягкий перенос находится в самом слове.
Так ведь и слово будет на одной строке
Не всегда.
Если ширина параграфа, например, 1 см, то 99% слов будет в нескольких (двух, трех...) строках.
Еще можно нажать, например, клавишу с буквой "А" и удерживать ее с минуту. Получим длинное слово без автопереносов.
Отредактировано Вождь (19.03.2010 08:13:47)
Ну ты рассматриваешь какие-то паталогические случаи. Тогда, может проверять символ, которым заканчивается строка?
...паталогические случаи...
Ячейка таблицы - это обычный случай. А уж в ячейках ширина параграфа достаточно мала.
По-видимому, простого решения не существует. Я придумал два извращения:
1. Точный метод: сравниваем ширину последнего символа в строке, когда автопереносы включены и когда выключены.
2. Приблизительный метод: делаем кучу проверок вероятности автопереноса, начиная от "автопереносы включены"... "слово в нескольких строках" ... до "наличие слова в словаре переносов".
…1. Точный метод: сравниваем ширину последнего символа в строке, когда автопереносы включены и когда выключены…
На моноширинных шрифтах не сработает
На моноширинных шрифтах не сработает
Сработает. Шрифт не имеет значения. Расстановка автопереносов на ширину букв не влияет. Визуально символ (character) с автопереносом это "А-", а без "А", естественно первый всегда будет шире.
Кстати, я всегда знал, что области Selection и Selection.Range ведут себя по разному. Интересный результат получится если поставить курсор поближе к концу строки и запустить код:
MsgBox "Range = " & Selection.Range.Information(wdHorizontalPositionRelativeToTextBoundary) & vbLf & "Selection = " & Selection.Information(wdHorizontalPositionRelativeToTextBoundary)
Оказывается Selection шире Selection.Range
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться