Учимся писать макросы для OpenOffice
Необходимые приемы для профессиональной работы с текстом. Показан пример с использованием макросов и регулярных выражений.
Задача: произвести обработку текста для статей:
- удалить все пробелы и знаки табуляции из начала и конца абзацов,
- заменить все дефисы на тире в тексте, в том числе и в самом начале абзацев.
Пример приводится для версии OpenOffice 2.4.0
Стандартное решение:
поиск и замена, нажимаем Ctrl+F
В примере мы пишем регулярное выражение удаляющее пробелы и знаки табуляции в начале абзаца.
Что сказать? Универсально. Но четыре раза на каждую статью писать регулярное выражение мне кажется слишком долго.
Другое решение:
Надо написать макрос. Это очень легко. В OpenOffice хорошая русская документация и есть встроенная поддержка регулярных выражений.
Найдите в меню Сервис → Mакросы → Управление макросами → OpenOffice.org Бэйсик...
Создайте макрос, например, под именем Typograph.
Код макроса:
Sub Typograph
'здесь инициализируем объекты
Dim Doc As Object
Dim Replace As Object
'указываем объект, с которым будем работать
Doc = StarDesktop.CurrentComponent
'создаем объект типа ReplaceDescriptor
Replace = Doc.createReplaceDescriptor
'объект работает с регулярными выражениями
Replace.SearchRegularExpression = True
'удаляем знаки табуляции и пробела в начале абзаца
Replace.SearchString = "^( |\t)*"
Replace.ReplaceString = ""
Doc.replaceAll(Replace)
'удаляем знаки табуляции и пробела в конце абзаца
Replace.SearchString = "( |\t)*$"
Replace.ReplaceString = ""
Doc.replaceAll(Replace)
'заменяем дефис на тире в середине текста
Replace.SearchString = " - "
Replace.ReplaceString = " — "
Doc.replaceAll(Replace)
'заменяем дефис на тире в начале абзаца
Replace.SearchString = "^- "
Replace.ReplaceString = "— "
Doc.replaceAll(Replace)
End Sub
Сохраните и закройте окно Бэйсика. Оно больше не нужно. Теперь надо сделать так, чтобы макрос под названием «Typograph» вызывался по нажатию, например Ctrl+Shift+D.
Заходим в меню Сервис → Настойка:
Установите сочетание клавиш для макроса.
Возможно, вы увидите окно об ошибке:
Не бойтесь. Просто вы установили себе версию OpenOffice без JRE. Нажмите несколько раз «OK» и продолжайте. Всё прекрасно работает и без JRE.
Осталось проверить работу скрипта. Скопируйте следующий текст в редактор и нажмите Ctrl+Shift+D.
УРА!!! Теперь я умею писать макросы для OpenOffice. Можно легко удалить все лишние отступы в начале и в конце абзаца, а также устанавливать тире вместо дефиса в начале абзаца, и - в середине. - Я надеюсь, вы освоили урок?
А теперь упражнение! Усовершенствуйте макрос. Пусть он заменяет последовательность из одного или более символов пробела и табуляции на один пробел во всем тексте. Выражение для поиска последовательности пробельных символов выглядит так ( |\t)+.
Артемий Зайцев