[identity profile] katastrofi4eski.livejournal.com posting in [community profile] useful_faq
Многие замечали, наверное, что когда сохраняешь документ из Интернета в текстовом формате (*.тхт) в Блокноте, то при переносе его в Ворд остаются широкие поля по бокам. "Растянуть" его на всю ширину страницы обычными средствами (линейкой вверху) не получается. Если левое поле еще как-то сдвигается, то правое стоит намертво. Остается удалять все пробелы вручную, что при маленькой объеме текста не так сложно, хоть и муторно.

У меня много-много страниц такого текста, и что с ним делать, я совершенно не представляю.
Подскажите, пожалуйста.

Date: 2006-01-11 08:30 am (UTC)
From: [identity profile] bomze.livejournal.com
ищи плагин для worda FormatKiller1.0

Date: 2006-01-11 08:44 am (UTC)
From: [identity profile] kibirov.livejournal.com
Ой, да это же просто возвраты каретки справа стоят, или символы конца абзаца. Умеете заменять спец.символы через Ctrl+H? Или с макросами работать?

Идея в том, что то, что вы видите после открытия текстового файла в Ворде - это не СТРОЧКИ, это, с точки зрения Ворда - полноценные абзацы. Т.к. в текстовом файле каждая строка заканчивается знаком возврата каретки, а в Ворде он обозначает конец абзаца. А раз для Ворда они - абзацы, то и начинаются каждый - с новой строки.

Нужно просто заменить все возвраты кареток на пробел - но исключив при этом те места, где действительно заканчиваются абзацы :) Я что-то такое сто лет назад для Ворда писал, могу текст макроса поискать. Что-то очень простое. Надо?

Date: 2006-01-11 08:59 am (UTC)
From: [identity profile] gvozdeff.livejournal.com
Сначала надо заменить все случаи, когда идут два знака абзаца подряд на какую-нибудь уникальную последовательность символов, например: "[КонецАбзаца]", потом заменить все абзацы на пробелы, потом заменить все случаи двух пробелов подряд на один, сделать это несколько раз, пока таких не останется, а потом поменять "[КонецАбзаца]" на символы абзаца. Простенькая программка.

Date: 2006-01-11 09:54 am (UTC)
From: [identity profile] kibirov.livejournal.com
Да-да!! :)

Проглядите, кстати, если не сложно, парой комментов ниже текст макроса - я его левой ногой написал восемь лет назад и с тех пор много чего позабыл. Может, чего глупое совсем можно убрать. Но работать он работает :)

Я, оказывается, использовал "собачку" как уникальный символ для двух концов абзаца, и ещё "тильду" - чтоб обозначить конец абзаца и идущие сразу за ним пробелы, что тоже может обозначать абзац в текстовых файлах: отступ, отбитый пробелами. В текстах из библиотеки Мошкова, ради которых всё затевалось, эти символы не попадались вроде :)

Date: 2006-01-11 09:42 am (UTC)
ext_639935: с вебкамеры (Default)
From: [identity profile] xarkonnen.livejournal.com
есть такая программа (небольшая, русская, бесплатная, не требующая инсталляции, под windows) WinMakeZtxt. вообще она предназначена для конвертации текста в формат наладонника, но и сохранять в просто текст тоже умеет. а заодно и бороться с описанными ужОсами тоже :-). взять можно, например, тут: http://www.hpc.ru/soft/software.phtml?id=4511

Date: 2006-01-11 10:02 am (UTC)
From: [identity profile] mgld.livejournal.com
thx for this.

Date: 2006-01-11 09:46 am (UTC)
From: [identity profile] kibirov.livejournal.com
В ворде Сервис - Макросы - Создать, и в открывшемся окне редактора вижуал бэйсика вставляем такое вот безобразие - вместо того, что там уже поставилось.

После этого - как хотите: можно кнопку или клавишу назначить макросу, можно просто заходить Сервис-Макросы, выбирать вот этот вот и нажимать "Выполнить"

Он, по идее, ещё считает "настоящим абзацем" строку, которая начинается с нескольких пробелов - ну, в дос-текстах часто начальный отступ делают несколькими пробелами.

Sub format_dos_text()

Set myRange = ActiveDocument.Content
myRange.Find.Execute FindText:="^p^p", ReplaceWith:="@", _
Replace:=wdReplaceAll

myRange.Find.Execute FindText:=" -", ReplaceWith:=" " + "^0150", _
Replace:=wdReplaceAll

myRange.Find.Execute FindText:="^p ", ReplaceWith:="~", _
Replace:=wdReplaceAll

myRange.Find.Execute FindText:="^p", ReplaceWith:=" ", _
Replace:=wdReplaceAll

myRange.Find.Execute FindText:="@", ReplaceWith:="^p^p", _
Replace:=wdReplaceAll


myRange.Find.Execute FindText:="~", ReplaceWith:="^p ", _
Replace:=wdReplaceAll

ActiveDocument.Paragraphs.Alignment = wdAlignParagraphJustify

With ActiveDocument
.HyphenationZone = InchesToPoints(0.63)
.HyphenateCaps = True
.AutoHyphenation = True
End With

End Sub

Date: 2006-01-11 10:42 am (UTC)
From: [identity profile] gvozdeff.livejournal.com
У меня помощнее сделано, она еще комментирует выполняемые действия и использует для поиска регулярные выражения. Но текст проги сюда не входит, она больше 4300 символов.

Date: 2006-01-11 10:49 am (UTC)
From: [identity profile] kibirov.livejournal.com
Ого! Что значит серьёзный подход к делу :)

Date: 2006-01-11 09:43 am (UTC)
From: [identity profile] morrigan-007.livejournal.com
встречный вопрос. а не проще ли сразу в Ворде сохранять? я так всегда делаю. да, согласна, некоторые тексты потом приходится долго и нудно форматировать, но в большинстве случаев они в нормальном виде. и не надо мучаться с переносм из блокнота в ворд.

Date: 2006-01-11 09:50 am (UTC)
From: [identity profile] kibirov.livejournal.com
Из библиотеки Мошкова, например, всё равно перенесутся с возвратами кареток. Я и макрос-то написал, когда нашёл эту библиотеку - умучился править :)