Если в тексте не используются специальные символы конца абзаца, то абзацы можно определить по пустой строке между ними или по пробелам или символу табуляции в начале абзаца. В обоих случаях задача – найти и удалить все символы конца абзаца,
Если абзацы разделены пустой строкой, то сначала мы должны убедиться, что эта строка действительно пустая. В частности, в ней не должно быть пробелов – а они там часто могут встретиться. Следовательно, первым делом мы должны найти все строки, начинающиеся с пробела, и удалить этот пробел. В этом случае формат поиска будет выглядеть так – ^p^w, замены – ^p.
Поиск и замену следует повторить многократно, до тех пор, пока количество найденных и замененных случаев не будет равно нулю (если бы мы знали, сколько пробелов в пустых строках, можно было бы справиться быстрее, но мы не знаем этого точно – не считать же их по всему тексту).
Следующим шаг – найти все пустые строки. Теперь, когда они совсем пустые, в тексте они выглядят как знак «конец абзаца» сразу после другого знака «конец абзаца». Мы находим все двойные знаки абзаца (формат поиска – ^p^p) и заменяем их чем-нибудь таким, что никогда и ни при каких условиях не встретится в тексте (например, вот таким сочетанием: ==((АБЗАЦ))==) – чтобы потом случайно не заменить чем-нибудь нужным.
Следующий шаг – удаление всех знаков «конец абзаца» и замена их знаком «пробел». Просто удалять знаки «конец абзаца» нельзя, потому что это может привести к тому, что слова «сольются»; если же возникнут двойные пробелы, то их легко найти и удалить. В результате проведенной операции весь текст сольется в одну строку, но настоящие абзацы отмечены в тексте нашим сложным набором символов. Найдя его и заменив знаком «конец абзаца», мы закончим исправление абзацев в тексте.
Если абзацы отмечены пробелами или знаком табуляции, то алгоритм действий будет похож на предыдущий. Только в этом случае мы найдем все знаки табуляции (или цепочки пробелов) в начале абзаца и заменим их каким-нибудь набором символов, не встречающимся в тексте. Затем нужно удалить все знаки «конец абзаца» и заменить использованный набор символов знаком «конец абзаца».
Знаки кавычек можно исправить при использовании поиска и замены. В то время, как уникальный признак закрывающей кавычки придумать нельзя (перед ней может быть любой символ, а после нее пробел или знак препинания), открывающие кавычки всегда стоят после пробела. Найдя и заменив все знаки «фут» или «дюйм» после пробела открывающейся кавычкой, следующим шагом мы можем найти все оставшиеся знаки «фут» или «дюйм» и заменить закрывающейся кавычкой.
Знаки «тире» можно найти и исправить в несколько приемов. Тире использу ется при оформлении диалогов или как знак препинания. В первом случае найти и заменить легко: достаточно найти все знаки «дефис», стоящие в начале абзаца. Знак «тире» как знак препинания принято отделять от слов пробелами, и это подскажет, как его найти. Однако следует помнить, что иногда комбинация знаков «запятая» и «тире» пишется без пробела, поэтому может возникнуть необходимость искать отдельно знаки «дефис» после пробела и отдельно – знаки «дефис» перед пробелом. В обоих случаях желательно добавить пробелы вокруг знака «тире»; появляющиеся двойные пробелы убрать очень легко, зато добавление пробелов может исправить некоторые ошибки, например «прилипшие» к словам знаки.
Знаки переносов можно попытаться убрать нахождением и удалением (
Примечание
Изучив заводские сохраненные настройки поиска и замены, вы можете обнаружить, что они содержат настройки для замены дефисов на тире, двойных пробелов на одинарные и удаления пустых строк. Часть из этих запросов создана с использованием вкладки GREP, чтобы обойтись одной операцией по иска и замены вместо нескольких. Тем не менее мы привели эти примеры, чтобы вы знали, как они «устроены» и могли самостоятельно выполнять подобные операции в других ситуациях.
Вкладка Glyph (Символ) (рис. 16.17) позволяет находить и заменять отдельные символы в тексте.
Рис. 16.17. Диалоговое окно Find/Change (Найти/Заменить), вкладка Glyph (Символ)